题目
747
给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。
请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。
思路
找出最大和次大,判断最大是不是大于或等与次大的两倍
代码
class Solution {
public int dominantIndex(int[] nums) {
/**
找出最大和次大,看最大是不是次大的两倍 */
int max1=-1;
int max2=-1;
int index=-1;
for(int i=0;i<nums.length;i++){
if(nums[i]>max1){
max2=max1;
max1=nums[i];
index=i;
}else if(nums[i]>max2){
max2=nums[i];
}
}
return max1>=2*max2?index:-1;
}
}
一维数组动态和
1480
silu
代码
class Solution {
public int[] runningSum(int[] nums) {
// int []num=new int [nums.length];
// num[0]=nums[0];
// for(int i=1;i<nums.length;i++){
// num[i]=num[i-1]+nums[i];
// }
// return num;
/**如果不创建额外数组 */
for(int i=1;i<nums.length;i++){
nums[i]=nums[i-1]+nums[i];
}
return nums;
}
}