【每日刷题】Day57

【每日刷题】Day57

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 461. 汉明距离 - 力扣(LeetCode)

2. 495. 提莫攻击 - 力扣(LeetCode)

3. 771. 宝石与石头 - 力扣(LeetCode)

1. 461. 汉明距离 - 力扣(LeetCode)

//思路:位运算。将x^y,相同为0,相异为1。x和y不相同的位会为1,剩余相同的位为0。再将^后的结果不断与1进行&。

int hammingDistance(int x, int y)

{

    int num = x^y;

    int ans = 0;

    for(int i = 0;i<32;i++)

    {

        if(num&1==1)

            ans++;

        num>>=1;

    }

    return ans;

}

2. 495. 提莫攻击 - 力扣(LeetCode)

//思路:一次遍历。直接将每次攻击都加上中毒时间,随后计算每相邻两次攻击重叠的中毒时间,减去即可。

int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration)

{

    int ans = duration;

    for(int i = 1;i<timeSeriesSize;i++)

    {

        ans+=duration;

        if(timeSeries[i]-timeSeries[i-1]<duration)

            ans-=(duration-timeSeries[i]+timeSeries[i-1]);

    }

    return ans;

}

3. 771. 宝石与石头 - 力扣(LeetCode)

//思路:哈希表。创建宝石字符串的哈希表,其键值为1。将石头字符串中的元素映射入哈希表中,看其键值是否为1。

int numJewelsInStones(char* jewels, char* stones)

{

    int ans= 0;

    int hash[123] = {0};

    for(int i = 0;i<strlen(jewels);i++)

    {

        hash[jewels[i]] = 1;

    }

    for(int i= 0;i<strlen(stones);i++)

    {

        if(hash[stones[i]]!=0)

            ans++;

    }

    return ans;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值