Leetcode记录:(747) 至少是其他数字两倍的最大数

版权声明: https://blog.csdn.net/DL_wly/article/details/84946542
  • 题目描述

在一个给定的数组nums中,总是存在一个最大元素。

查找数组中的最大元素是否至少是数组中每个其他数字的两倍。

如果是,则返回最大元素的索引,否则返回-1。

  • 解决思路

(1)找到数组最大的元素以及最大元素对应的位置。

(2)将数组重新排序。

(3)若排序后最大的数大于第二大的数的两倍,则返回最大元素对应的位置,反之返回-1。

分析:可能排序过程复杂度高,更好的做法是找到最大的元素,再找到第二大的元素。

  • C++代码
class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        int i;
        int maxPosition = max_element(nums.begin(),nums.end()) - nums.begin();
        int count = nums.size();
        
        sort(nums.begin(), nums.end());
        if(nums[count-1] >= (nums[count-2]*2) ){
            return maxPosition;
        }
        else
            return -1;
    }
};

猜你喜欢

转载自blog.csdn.net/DL_wly/article/details/84946542
今日推荐