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
相对快一点
求点赞
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- (Leetcode) 至少是其他数字两倍的最大数 - Python实现
- Leetcode747至少是其他数字两倍的最大数
- [Leetcode]747. 至少是其他数字两倍的最大数
- 747. 至少是其他数字两倍的最大数
- LeetCode 747. 至少是其他数字两倍的最大数(Java语言)
- 747. 至少是其他数字两倍的最大数
- 747. leetcode至少是其他数字两倍的最大数---java代码
- leetcode747. 至少是其他数字两倍的最大数
- [Leetcode] 747. 至少是其他数字两倍的最大数 java
- [LeetCode] Largest Number At Least Twice of Others 至少是其他数字两倍的最大数
- 《LeetCode笔记14》:至少是其他数字两倍的最大数
- Java数组(算法169,747):多数元素,至少是其他数字两倍的最大数
- 数组和字符串//至少是其他数字两倍的最大数
- leetcode_[python/C++] 179. Largest Number(数字组合成最大数)
- Leetcode 063 不同路径|| Python C++ 详细题解
- C++:输入10个数字,找出最大最小值(可处理误输入)
- c++/java/python priority_que实现最大堆和最小堆
- 简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他
- 零基础学python-5.6 数字位操作与其他工具
- 找出一串数字中,n个连续的数之和最大c++代码实例及运行结果