嗯,我知道这个标题几乎没有意义,但我找不到一个更好的理由来解释我的问题。
因此,我刚刚开始在LeetCode上做一些挑战,现在我正在迈出第一步。但有一种情况让我困惑。
所以我解决了一个叫做的问题--“1位数”,它基本上给出了一个无符号整数,想知道它的二进制表示中有多少个1。
首先,我写了这段代码;
class Solution {
public:
int hammingWeight(uint32_t n) {
int answer=0;
while(n>0)
{
if(n%2)answer++;
n/=2;
}
return answer;
}
};然后我意识到它的运行时间是3毫秒。
然后,我尝试其他解决方案来优化它,我已经编写了最快的代码(我认为)。
class Solution {
public:
int hammingWeight(uint32_t n) {
int answer=0;
while(n>0)
{
if(n%2==1)answer++;
n/=2;
}
return answer;
}
};所以这次的运行时间是0毫秒。
我想,由于if(i%2)进行的比较较少,所以速度会更快。
唯一的区别是"if命令“中的条件。
那么,为什么if(i%2==1)比if(i%2)更快呢?
发布于 2022-10-15 13:01:14
https://stackoverflow.com/questions/74079605
复制相似问题