思路
方法1:
直接排序,最大的两个值在数组尾部或者头部
时间复杂度>=O(nlogn)
方法2:
只需要最大的两个数,那就遍历数组,先将数组头部两个数默认为最大的两个数,再根据数组的遍历值对这两个数进行调整
时间复杂度=O(n)
代码
int maxProduct(int* nums, int numsSize){
int num_0=nums[0],num_1=nums[1];
for(int i=2;i<numsSize;i++){
if(nums[i]>num_0 || nums[i]>num_1){
if(nums[i]>num_0 && nums[i]>num_1){
if(num_0>num_1){
num_1=nums[i];
}
else{
num_0=nums[i];
}
}
else if(nums[i]>num_0 && nums[i]<=num_1){
num_0=nums[i];
}
else{
num_1=nums[i];
}
}
}
return (num_0-1)*(num_1-1);
}