题目描述
给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。
请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1
思路
找出最大数和第二大数看最大数是不是第二大数的两倍即可。
leetcode链接:
至少是其他数字两倍的最大数
代码:
int dominantIndex(int* nums, int numsSize){
// 如果数组只有一个数 直接返回0下标
if(numsSize == 1) {
return 0;
}
int first_max_index = 0;
int second_max_index = 0;
/*
要使用数组的第一个元素和第二个元素判断一下
在赋值两个下标,否则会出现卡死的现象
*/
if (nums[0] > nums[1]) {
first_max_index = 0;
second_max_index = 1;
} else {
first_max_index = 1;
second_max_index = 0;
}
int i = 0;
for (i = 2; i < numsSize; i++) {
if (nums[i] > nums[first_max_index]) {
second_max_index = first_max_index;
first_max_index = i;
} else if (nums[i] > nums[second_max_index]) {
second_max_index = i;
}
}
if (nums[first_max_index] >= 2 * nums[second_max_index]) {
return first_max_index;
} else {
return -1;
}
}