LeetCode 747 至少是其他数字两倍的最大数[遍历 双指针] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 747 至少是其他数字两倍的最大数[遍历 双指针] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
一道非常简单的遍历题目,首先调用*max_element获取最大的数值,然后遍历,一旦遍历到该数记录下标,其他的数进行比较,如果两倍大于最大数,返回-1,遍历结束返回最大数下标,代码如下:
class Solution
public:
int dominantIndex(vector<int>& nums)
int num = *max_element(nums.begin(), nums.end());
int index = 0;
for(int i = 0; i < nums.size(); i ++)
if(nums[i] == num)
index = i;
continue;
if(nums[i] * 2 > num) return -1;
return index;
;
另一种方法借用双指针思想,一个记录最大值,另一个记录第二大值,每次遍历到一个数,如果比当前最大值大,更新最大值,第二大值变成之前最大值,并记录最大值的下标;如果遍历到的数介于第一第二大值之间,更新第二大值,最后返回判断第二大值是否大于最大值,是返回-1,否则返回最大值下标,代码如下:
class Solution
public:
int dominantIndex(vector<int>& nums)
int num1 = -1, num2 = -1;
int index = 0;
for(int i = 0; i < nums.size(); i ++)
if(nums[i] > num1)
index = i;
num2 = num1;
num1 = nums[i];
else if(nums[i] > num2)
num2 = nums[i];
else continue;
return num1 < num2 * 2 ? -1 : index;
;
以上是关于LeetCode 747 至少是其他数字两倍的最大数[遍历 双指针] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
leetcode 1月13日每日一题 747. 至少是其他数字两倍的最大数
leetcode 1月13日每日一题 747. 至少是其他数字两倍的最大数