小知识:
1.如果函数中需要用到数组
int hanshu(int*ret)即可,不需要returnsize,也不需要申请空间,因为不返回数组
2.1<<21移位符的妙用:2的21次方
day5 计数法:计数法的含义顾名思义,就是利用一个变量,记录下某个数值出现了多少次。从而实现对数值的计数。
第一题
需要找和为2的幂的数对,可以改变思路枚举2的幂,枚举一个数,检查另一个数在不在数组中
第二题
若为字符串,则将char减去'a'得到其排序\
第三题
bool areOccurrencesEqual(char * s){
int a[26]={0};
int temp=0;
for(int i=0;i<strlen(s);i++)
{
a[s[i]-'a']++;
}
for(int j=0;j<26;j++)
{
if(a[j])
{
if(!temp)
{
temp=a[j];
}
else{
if(a[j]!=temp)
{
return false;
}
else{
continue;
}
}
}
}
return true;
}
第四题
我的思路:两层for
思路2:先升序排列,用for循环计算相邻相同数字的数量,再用排列思想求出有几种可能
int cmp(const void*a,const void*b)
{
return *(int*)a-*(int*)b;}
第五题
记录数组中出现的元素个数这步操作位于寻找合适数对的操作的后面,可以保证循环遍历的数永远找之前出现的数作对,可避免同样的两个数重复作对
第六讲
之前做过了,复习一下sscanf
sscanf(date,"%d-%d-%d",&y,&m,&d)