zoukankan      html  css  js  c++  java
  • LeetCode:至少是其他数字两倍的最大数【747】

    LeetCode:至少是其他数字两倍的最大数【747】

    题目描述

    在一个给定的数组nums中,总是存在一个最大元素 。

    查找数组中的最大元素是否至少是数组中每个其他数字的两倍。

    如果是,则返回最大元素的索引,否则返回-1。

    示例 1:

    输入: nums = [3, 6, 1, 0]
    输出: 1
    解释: 6是最大的整数, 对于数组中的其他整数,
    6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.

    示例 2:

    输入: nums = [1, 2, 3, 4]
    输出: -1
    解释: 4没有超过3的两倍大, 所以我们返回 -1. 

    提示:

    1. nums 的长度范围在[1, 50].
    2. 每个 nums[i] 的整数范围在 [0, 99].

    题目分析

      解法一:直接找到最大元素,然后遍历每个元素,看是不是它是每个元素的2倍。这是最简单的方法,保底用的,但是效率很低。

      解法二找到最大和第二大的元素,看最大的是不是第二大的2倍,若不是直接返回-1.若是,在数组中找到它的索引

    Java题解 

    class Solution {
       public int dominantIndex(int[] nums) {
    		if(nums.length==1) {
        		return 0;
        	}
            int max=Integer.MIN_VALUE;  //最大数
            int second=Integer.MIN_VALUE;//第二大的数
            int index=0;
            for(int i=0;i<nums.length;i++) {
            	if(nums[i]>max) {
            		max=nums[i];
            		index=i;
            	}
            }
            for(int i:nums) {
            	if(i>second&&i<max) {
            		second=i;
            	}
            }
            if(second*2<=max) {
            	return index;
            }
            
            return -1;
    	}
    }
    

      

  • 相关阅读:
    【回顾整理】HTML+CSS个的两个实战项目
    【转】tkinter实现的文本编辑器
    迟到的tkinter---学校选课刷屏器
    调用有道翻译API
    【leetCode】3Sum Closest
    【LeedCode】3Sum
    【LeedCode】String to integer(atoi)
    【LeetCode】Reverse digits of an integer
    前端工程师必备PS技能
    【LeetCode】Add Two Numbers
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9796522.html
Copyright © 2011-2022 走看看