您的位置:首页 > 编程语言 > C语言/C++

O(N)的极速题解 Python3 C++-至少是其他数字两倍的最大数-力扣题解

2020-03-18 18:55 501 查看

贪心算法,只要遍历一遍,遍历第一项的时候即把它当作最大项,以后如果出现更大的,再将最大项设置为它。同时有一个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


相对快一点

求点赞

  • 点赞
  • 收藏
  • 分享
  • 文章举报
(´▽`)ノProgram(´▽`)ノ 发布了189 篇原创文章 · 获赞 111 · 访问量 2万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: