您的位置:首页 > 其它

LeetCode-204. Count Primes

2018-01-18 16:56 330 查看

Description



Solution 1(C++)

class Solution {
public:
int countPrimes(int n) {
vector<bool> isprime(n, true);
isprime[0] = false, isprime[1] = false;
for (int i = 0; i < sqrt(n); ++i) {
if (isprime[i]) {
for (int j = i*i; j < n; j += i) {
isprime[j] = false;
}
}
}
return count(isprime.begin(), isprime.end(), true);
}
};


算法分析

这种算法题,简单经典,直接背下来就好了。

虽然简单,仔细品品还是蛮有意思的。其实该方法能降低算法复杂度,就是通过避免重复。从第二层循环中j+=i。就能看出来,第二层循环是按照i的大小来进行跳跃遍历的。而随着i从小到大,“跳跃”没踩到的地方总会踩到。

程序分析

注意:

isprime[0] = false, isprime[1] = false;


前一个是为了防止死循环。后一个是为了防止算法又变为从0~n的遍历。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: