LeetCode——747.至少是其他数字两倍的最大数

通过万岁!!!

  • 题目:找到数组中的最大的数,然后看看这个数是不是都大于等于其他数的两倍。如果是返回这个数的下标,否则返回-1。特殊情况,当数组长度是1的时候,返回0。
  • 思路:找到最大的和第二大的即可,只要最大的大于第二大的两倍,然后直接返回就行了。可以用排序,但是也可以用一层for找。
  • 技巧:
    • 直接用一层for,找最大的,并且找第二大的,还需要记录最大的下标

伪代码

首先判断数组长度要是=1,则直接return 0即可
定义最大的和第二大的数的变量,默认设置成0
定义最大的数的下标,默认是-1即可。
for变量数组
    当前数要是大于最大的数,则之前的最大的给第二大的,现在这个数给最大的,并记录下标,然后直接continue
    第二大的数和当前数进行比较,要是大于第二大的数,则将这个数给第二大的。
最后看看最大的是不是大于第二大的两倍,如果是返回最大的下标
否则返回-1即可

java代码

class Solution {
    public int dominantIndex(int[] nums) {
        if (nums.length == 1) return 0;
        int first = 0, second = 0;
        int firstIdx = -1;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] > first) {
                second = first;
                first = nums[i];
                firstIdx = i;
                continue;
            }
            second = second < nums[i] ? nums[i] : second;
        }
        if (first >= 2 * second)
            return firstIdx;
        else return -1;
    }
}
  • 总结:题目不难,主要是理解题目意思,也没有什么技巧,用排序也是可以的。
上一篇:轮播图(教程)


下一篇:CSS 分页