力扣https://leetcode-cn.com/problems/max-consecutive-ones/
思路:没什么好说的,有1就+1,连续就继续+,不连续就归零重新开始,把ans存在Maxans
int findMaxConsecutiveOnes(int* nums, int numsSize)//int*nums给的数组,int numsSize数组长度 { int ans=0,Maxans=0; //ans连续1的个数,最大连续1的个数,初始化为零 for(int i=0;i<numsSize;i++) //循环遍历 { if(nums[i]) { ans++; //nums[i]等于1时,连续1个数+1 Maxans=fmax(ans,Maxans); //把连续1个数取大,放到Maxans中 } else { ans=0; //nums[i]不等于1时 重新将ans初始化为0,之后继续循环直到遍历到数组最后 } } return Maxans; }
注:fmax()函数math.h中的函数,用于查找给定数字的最大值,它接受两个数字并返回较大的一个。相当于之前写的
int max(int a,int b) { return a>b?a:b; }
力扣https://leetcode-cn.com/problems/maximum-product-of-two-elements-in-an-array/
思路:找到最大和第二大的两个数-1后相乘,OK了。
int maxProduct(int* nums, int numsSize)//int*num给的数组,int numsSize 数组长度 { int max1=0,max2; //max1最大数,max2第二大的数 for(int i=0;i<numsSize;i++) { if(max1<=nums[i]) { max2=max1; //nums大的时候,把值赋给max1,把之前max1的值给max2 max1=nums[i]; } if(nums[i]<max1&&nums[i]>max2)//要是数组第一个数就是最大的,那max2岂不是没有值了 { max2=nums[i]; //再确定一下max2的值 } } return (max1-1)*(max2-1); //-1之后相乘 }
注:qsort排序的函数,我没用过不会用,可以去看看,要是能排个序最大最小值就好找了