Java實現 LeetCode 747 至少是其餘數字兩倍的最大數(暴力)

747. 至少是其餘數字兩倍的最大數

在一個給定的數組nums中,老是存在一個最大元素 。java

查找數組中的最大元素是否至少是數組中每一個其餘數字的兩倍。數組

若是是,則返回最大元素的索引,不然返回-1。dom

示例 1:ide

輸入: nums = [3, 6, 1, 0]
輸出: 1
解釋: 6是最大的整數, 對於數組中的其餘整數,
6大於數組中其餘元素的兩倍。6的索引是1, 因此咱們返回1.spa

示例 2:code

輸入: nums = [1, 2, 3, 4]
輸出: -1
解釋: 4沒有超過3的兩倍大, 因此咱們返回 -1.索引

提示:it

nums 的長度範圍在[1, 50].
每一個 nums[i] 的整數範圍在 [0, 100].io

PS:
找出最大的兩個數,而後看看第一大的是否是第二大的的二倍多,不是就返回-1,是的話,就返回索引class

class Solution {
     public int dominantIndex(int[] nums) {
        if (nums.length < 1) return -1;
        if (nums.length == 1) return 0;
        int max = 0;
        int sm = 0;
        
        int idx = 0;
        for (int i=0; i<nums.length; i++) {
            int n = nums[i];
            if (n >= max && n >= sm) {
                sm = max;
                max = n;
                idx = i;
            } else if (n < max && n > sm) {
                sm = n;
            }
        }
        if (max >= sm * 2) {
            return idx;
        } else {
            return -1;
        }
    }
}

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.

提示:

nums 的長度範圍在[1, 50].
每一個 nums[i] 的整數範圍在 [0, 100].

PS:
找出最大的兩個數,而後看看第一大的是否是第二大的的二倍多,不是就返回-1,是的話,就返回索引

class Solution {
     public int dominantIndex(int[] nums) {
        if (nums.length < 1) return -1;
        if (nums.length == 1) return 0;
        int max = 0;
        int sm = 0;
        
        int idx = 0;
        for (int i=0; i<nums.length; i++) {
            int n = nums[i];
            if (n >= max && n >= sm) {
                sm = max;
                max = n;
                idx = i;
            } else if (n < max && n > sm) {
                sm = n;
            }
        }
        if (max >= sm * 2) {
            return idx;
        } else {
            return -1;
        }
    }
}
相關文章
相關標籤/搜索