1. 程式人生 > >747. Largest Number At Least Twice of Others(python+cpp)

747. Largest Number At Least Twice of Others(python+cpp)

題目:

In a given integer array nums, there is always exactly one largest element.
Find whether the largest element in the array is at least twice as much as every other number in the array.
If it is, return the index of the largest element, otherwise return-1.
Example 1:

Input: nums = [3, 6, 1, 0] 
Output: 1 
Explanation: 6 is the largest integer, and for every other number in the array
x, 6 is more than twice as big as x.  The index of value 6 is 1, so we return 1. 

Example 2:

Input: nums = [1, 2, 3, 4] 
Output: -1 
Explanation: 4 isn't at least as big as twice the value of 3, so we return -1.  

Note:
nums will have a length in the range [1, 50].
Every nums[i] will be an integer in the range[0, 99].

解釋:
判斷陣列章最大的數是否是所有其他數字的至少2倍大,如果是,返回氣位置,如果不是,返回-1。
排序之後比較最大的數和第二大的數即可。
python程式碼:

class Solution(object):
    def dominantIndex(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        
        if len(nums)<2:
            return 0
        else:
            sort=sorted(nums)
            if sort[-1]>=2*sort[-2]:
                return nums.
index(sort[-1]) return -1

c++程式碼:

class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        int n=nums.size();
        if (n<2)
            return 0;
        vector<int>newnums(nums.begin(),nums.end());
        sort(newnums.begin(),newnums.end());
        return newnums[n-1]>=2*newnums[n-2]?(max_element(nums.begin(),nums.end())-nums.begin()):-1;
    }
};

總結:
c++中用max_element()返回陣列中最大值的地址。