《算法集训传送门》
👉引言
铭记于心 | ||
---|---|---|
🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉 |
💖
❄️我们的算法之路❄️💖
众所周知,作为一名合格的程序员,算法 能力 是不可获缺的,并且在算法学习的过程中我们总是能感受到算法的✨魅力✨。
☀️🌟短短几行代码,凝聚无数前人智慧;一个普通循环,即是解题之眼🌟☀️
💝二分,💝贪心,💝并查集,💝二叉树,💝图论,💝深度优先搜索(dfs),💝宽度优先搜索(bfs),💝数论,💝动态规划等等, 路漫漫其修远兮,吾将上下而求索! 希望在此集训中与大家共同进步,有所收获!!!🎉🎉🎉
今日主题:终章
👉⭐️第一题💎
✨题目
✨思路:
暴力解法,声明两个函数,分成两步走暴力解题
✨代码:
var isPalindrome = function(n) {
let str = n.toString().split("").reverse().join("")
return str === n
}
var isPrime = function(n) {
for(let i = 0 ;i < n; i++){
if(n % i == 0){
return false
}
}
return true
}
👉⭐️第二题💎
✨题目
✨代码:
public class Solution {
public bool isPrime(int x)
{
if(x<2)return false;
for(int i=2;i*i<=x;i++)
{
if(x%i==0)return false;
}
return true;
}
public int CountPrimes(int n)
{
int res=0;
bool[] vis=new bool[n+1];
for(int i=2;i<n;i++)
{
if(vis[i])continue;//下文的vis[j*i]已经对其进行了预判,它不是质数直接跳过
if(isPrime(i))//判断是否为质数,是的话,它的倍数就不是了
for(int j=2;j<n;j++)
{
if(j*i<n)vis[j*i]=true;
else break;
}
else vis[i]=true;//不是的话记录在案
}
for(int i=2;i<n;i++)if(!vis[i])res++;//因为非质数记录的是true,所以统计false的个数
return res;
}
}
🌹写在最后💖:
相信大家对今天的集训内容的理解与以往已经有很大不同了吧,或许也感受到了算法的魅力,当然这是一定的,路漫漫其修远兮,吾将上下而求索!伙伴们,明天见!🌹🌹🌹