至少是其他数字两倍的最大数(747)
747. 至少是其他数字两倍的最大数 - 力扣(LeetCode)
解法:
class Solution {
public:
int dominantIndex(vector<int>& nums)
{
if (nums.empty()) {
return -1;
}
int max_idx = 0;
int max = nums[0];
for (int i = 1; i < nums.size(); ++i) {
if (nums[i] > max) {
max = nums[i];
max_idx = i;
}
}
for (int i = 0; i < nums.size(); ++i) {
if (i == max_idx) {
continue;
}
//nums[i] << 1 通过移位的方式计算nums[i]的2倍,速度更快
if ((nums[i] << 1) > max) {
return -1;
}
}
return max_idx;
}
};
总结:
时间复杂度O(N),空间复杂度O(1),通过移位的方式计算nums[i]的2倍,速度更快。