算法100讲第五六讲计数法(cmp,sscanf)

小知识:

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值