貪心算法,只要遍歷一遍,遍歷第一項的時候即把它當作最大項,以後如果出現更大的,再將最大項設置爲它。同時有一個flag記錄是否符合大兩倍的條件。
c++代碼
class Solution {
public:
int dominantIndex(vector<int>& nums) {
if (nums.size() == 0) return -1;
if (nums.size() == 1) return 0;
int max_index = 0;
bool flag = true;
for (int i=1;i<nums.size();i++){
if (nums[max_index] > nums[i]){
if (flag)
flag = nums[max_index] >= 2 * nums[i];
}
else{
flag = nums[i] >= 2 * nums[max_index];
max_index = i;
}
}
if (!flag) return -1;
else return max_index;
}
};
雖然有點慢,但也是通過👍
Python代碼:
class Solution:
def dominantIndex(self, nums: List[int]) -> int:
if len(nums)== 0:
return -1
if len(nums) == 1:
return 0
max_index = 0
flag = True
for i in range(1,len(nums)):
if nums[max_index] > nums[i]:
if flag:
flag = nums[max_index] >= 2 * nums[i]
else:
flag = nums[i] >= 2 * nums[max_index]
max_index = i
if not flag:
return -1
else:
return max_index
相對快一點
求點贊