class Solution { public: int dominantIndex(vector<int>& nums) { //m1存放数组中唯一的最大的整数,m2中存放次大值 int m1 = -1, m2 = -1; int index1 = -1;//存放最大数的下标 for (int i = 0; i < nums.size(); i++) { if (nums[i] > m1) { m2 = m1; m1 = nums[i]; index1 = i; } else if (nums[i] > m2) { m2 = nums[i]; } } return m1 >= 2 * m2 ? index1 : -1; } };
时间: 2023-05-23 11:05:49 浏览: 78
算法/编程练习:两个有序数组的中位数
nums) { //首先找到最大值和次大值的位置 int n = nums.size(); int maxIndex = 0; int secondMaxIndex = -1; for(int i = 1; i < n; i++) { if(nums[i] > nums[maxIndex]) { secondMaxIndex = maxIndex; maxIndex = i; } else if(secondMaxIndex == -1 || nums[i] > nums[secondMaxIndex]) { secondMaxIndex = i; } } //判断是否符合条件 if(nums[maxIndex] >= 2 * nums[secondMaxIndex]) { return maxIndex; } else { return -1; } } };
以上是一个C++的代码实现,用来找出数组中的最大值,并且判断最大值是否是次大值的两倍以上,如果是则返回最大值的下标,否则返回-1。该算法的时间复杂度为O(n),空间复杂度为O(1)。
阅读全文