【每日刷题】Day57
🥕个人主页:开敲🍉
🔥所属专栏:每日刷题🍍
🌼文章目录🌼
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;
}