LeetCode:至少是其他數字兩倍的最大數【747】
阿新 • • 發佈:2018-10-16
描述 index lee 提示 int highlight pan 是不是 dom
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.
提示:
nums
的長度範圍在[1, 50]
.- 每個
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; } }
LeetCode:至少是其他數字兩倍的最大數【747】