题目:
在一个给定的数组nums中,总是存在一个最大元素 。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
示例:
代码:
- 解法一
class Solution {
public int dominantIndex(int[] nums) {
if(nums==null||nums.length==0){ //数组不存在 或没有元素
return -1;
}
if(nums.length==1){ //数组有一个元素
return 0;
}
int maxNum=0; //最大值
int index=0; //最大值所对应的角标
for(int i=0;i<nums.length;i++){ //遍历找出最大值
if(maxNum<nums[i]){
maxNum=nums[i];
index=i;
}
}
for(int i=0;i<nums.length;i++){ //遍历查看是否符合要求
if(i!=index){
if(maxNum<(nums[i]*2)){
return -1;
}
}else{ //去除和自身的二倍比较
continue;
}
}
return index;
}
}
- 别人的代码
class Solution {
public int dominantIndex(int[] nums) {
if (nums == null || nums.length == 0) {
return -1;
}
int max = nums[0]; int index = 0;
for (int i = 0;i < nums.length;i++) {
if (nums[i] > max) {
max = nums[i];
index = i;
}
}
for (int i = 0;i < nums.length;i++) {
if (i == index) {
continue;
}
if (max < nums[i] * 2) {
return -1;
}
}
return index;
}
}