之前做过一次这个题,不过当时做的很麻烦,
这次来一个简化版
下面是之前写的
简化后
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int singleNumber(int* nums, int numsSize) {
int b=0;
for(int i=0;i<numsSize;i++)
{
b=b^nums[i];//0异或任何数位任何数,只有一个数是出现一次,其他出现两次的都消掉了。
}
return b;
}
int main()
{
int nums[] ={ 1, 2, 1, 4, 5, 2, 6, 4, 6} ;
int len =sizeof(nums)/sizeof(int);
int a =singleNumber(nums,len);
printf("%d\n",a);
system("pause");
return 0;
}
给定一个二进制数组, 计算其中最大连续1的个数。
示例 1:
输入 : [1, 1, 0, 1, 1, 1]
输出 : 3
解释 : 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.