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. 至少是其他数字两倍的最大数

747-LeetCode 至少是其他数字两倍的最大数

leetcode 1月13日每日一题 747. 至少是其他数字两倍的最大数

LeetCode 747 至少是其他数字两倍的最大数[遍历 双指针] HERODING的LeetCode之路

快乐水题747. 至少是其他数字两倍的最大数

747. 至少是其他数字两倍的最大数