本文目录本篇内容:leetcode每日一题747. 至少是其他数字两倍的最大数 简单的贪心用法和昨天一样 加深贪心思维
最近更新:2022年1月12日 leetcode每日一题334.递增的三元子序列 简单的双指针问题
个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)
点赞 收藏 ⭐留言 一键三连 关爱程序猿,从你我做起
写在前面题目
示例提示思路代码实现执行结果 写在最后
写在前面小付昨天高兴了一整天呢,更新的技术博文有幸入选到了csdn大数据领域榜第一名,这也是莫大的鼓励,但是刷题不能停,技术同样也不能荒废,话不多说,言归正传。今日的每日一题和昨天思路相通,一看到题就会,不信你试试?
题目至少是其他数字两倍的最大数
示例给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。
请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。
示例1:
输入:nums = [3,6,1,0] 输出:1 解释:6 是最大的整数,对于数组中的其他整数,6 大于数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。
示例2:
输入:nums = [1,2,3,4] 输出:-1 解释:4 没有超过 3 的两倍大,所以返回 -1 。
示例3:
输入:nums = [1] 输出:0 解释:因为不存在其他数字,所以认为现有数字 1 至少是其他数字的两倍。提示
1 <= nums.length <= 50
0 <= nums[i] <= 100
nums中的最大元素是唯一的
昨天思路今天接着用
因为是在一个数组中找到最大的数,然后其他所有数字应该满足该数的二倍应该小于等于这个最大数。
所以我们只需要找到存在于当前数组的最大数与第二大数值,并找出对应的下标即可。
代码实现class Solution {
public int dominantIndex(int[] nums) {
if (nums.length < 2)return 0;
//初始化最大值与第二大值
int maxVal =Integer.MIN_VALUE;
int secondVal = Integer.MIN_VALUE;
//初始最大值下标为0
int maxValIndex = 0;
//遍历寻找
for (int i = 0;i< nums.length ;i++){
//如果找到了最大值
if (nums[i] > maxVal){
//此时第二大值就是之前的最大值
secondVal = maxVal;
//当前值变为最大值
maxVal = nums[i];
//记录下标
maxValIndex = i;
}else if (nums[i] > secondVal){
secondVal = nums[i];
}
}
//符合要求则返回下标,反之返回-1
if (secondVal * 2 <= maxVal)
return maxValIndex;
return -1;
}
}
执行结果
写在最后
2022-1-13小付坚持打卡了哦~
今天的题 我认为是加深昨日的 思想 的题
多练多看 就会有思路
终于可以睡个好觉啦~
最后
每天进步点 每天收获点
愿诸君 事业有成 学有所获
如果觉得不错 别忘啦一键三连哦~



