标签:下标 最大 最大数 nums int 747 second LeetCode first
通过万岁!!!
- 题目:找到数组中的最大的数,然后看看这个数是不是都大于等于其他数的两倍。如果是返回这个数的下标,否则返回-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;
}
}
- 总结:题目不难,主要是理解题目意思,也没有什么技巧,用排序也是可以的。
标签:下标,最大,最大数,nums,int,747,second,LeetCode,first 来源: https://blog.csdn.net/qq_39056803/article/details/122481859
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。