目录

6265. 统计相似字符串对的数目 - ac

6266. 使用质因数之和替换后可以取到的最小值

分解质因数

1、tle代码

2、优化ac代码

6267. 添加边使所有节点度数都为偶数 - 建图+分类讨论

关于建图

6268. 查询树中环的长度 - LCA最近公共祖先


6265. 统计相似字符串对的数目 - ac

class Solution {
public:int similarPairs(vector<string>& words) {int res=0;for(int i=0;i<words.size()-1;i++){set<char>s1;for(int j=0;j<words[i].size();j++) s1.insert(words[i][j]);for(int j=i+1;j<words.size();j++) {set<char>s2;for(int k=0;k<words[j].size();k++) s2.insert(words[j][k]);if(s1==s2) res++;}}return res;}
};

6266. 使用质因数之和替换后可以取到的最小值

分解质因数

for(int i=2;i<=x/i;i++)if(x%i==0) //i一定是质数{int cnt=0;while(x%i==0) x/=i,cnt++;cout<<i<<' '<<cnt<<endl; //输出质因数 次方数}
if(x>1) cout<<x<<' '<<1<<endl;

1、tle代码

思路大体是对的 但是搞错了题目一个点

当某数的质因数为1 和本身时  质因数之和=本身

我当时想成 质因数之和=1+本身了 1不是质数!!!

class Solution {
public:bool isprime(int x){if(x<2) return false;for(int i=2;i<=x/i;i++)if(x%i==0) return false;return true;} int smallestValue(int n) {int minx=0x3f3f3f3f;int sum=n;if(isprime(n)) return n;while(true){n=sum;if(isprime(n)) break;sum=0;for(int i=2;i<=n/i;i++){int cnt=0;if(n%i==0){while(n%i==0) n/=i,cnt++;}while(cnt--) sum+=i;}if(n>1) sum+=n;minx=min(minx,sum);}return minx;}
};

2、优化ac代码

class Solution {
public:int yin(int n){int sum=0;for(int i=2;i<=n/i;i++)if(n%i==0){while(n%i==0) n/=i,sum+=i;}if(n>1) sum+=n;return sum;}int smallestValue(int n) {int cnt=0;while(true){int x=yin(n);if(x==n) break;n=x;}return cnt;}
};
class Solution {
public:int smallestValue(int n) {int t;while(true){t=n;int num=0;for(int i=2;i<=n/i;i++){if(n%i==0){while(n%i==0) n/=i,num+=i;}}if(n>1) num+=n;if(t==num) break;n=num;}return t;}
};

6267. 添加边使所有节点度数都为偶数 - 建图+分类讨论

6267. 添加边使所有节点度数都为偶数

思路:

  • 先统计奇度数点 存序号
  • 分类讨论可能满足条件的情况
  • 如果奇度数点==0 则不用连直接return true
  • 如果奇度数点==2

如果两点间没有连线 则只要连接这两个点就true

如果两点间有连线 则找出一个除a b点外的点c 如果该点和a b都没有连线 则两条边可以c-a 和c-b 也true

  • 如果奇度数点==4 如果两两可以相连则true(满足任意一种两两相连情况)
  • 除以上情况外都为false

关于建图 

  • 本题用map存图   map<PII,int> e
  • e[{a,b}]=e[{b,a}]=1 无向图 a b点间有连线
  • 判断a b点间是否相连   e.count({a,b})
class Solution {
public:static const int N=1e5+10;bool isPossible(int n, vector<vector<int>>& edges) {int d[N]={0};map<pair<int,int>,int> e;for(vector<int>& x:edges){int a=x[0],b=x[1];d[a]++,d[b]++;e[{a,b}]=e[{b,a}]=1;}vector<int> v;for(int i=1;i<=n;i++) if(d[i]%2) v.push_back(i);if(v.size()==0) return true;else if(v.size()==2){int a=v[0],b=v[1];if(!e.count({a,b})) return true; //如果a b两点间不存在连线 则将两点相连即可//否则找一个偶度数节点分别连接a和b 这样偶度数+2还是偶数 两个奇度数点+1也是偶数for(int i=1;i<=n;i++) if(i!=a&&i!=b&&!e.count({i,a})&&!e.count({i,b})) return true;}else if(v.size()==4){int a=v[0],b=v[1],c=v[2],d=v[3];//如果四个点能两两相连 满足任意一种情况即可 否则falseif(!e.count({a,b})&&!e.count({c,d})) return true;if(!e.count({a,c})&&!e.count({b,d})) return true;if(!e.count({a,d})&&!e.count({b,c})) return true;  }return false;}
};

6268. 查询树中环的长度 - LCA最近公共祖先

6268. 查询树中环的长度

对于两个点 a 和 b,每次把深度更深的点往父节点移一步,直到它们走到同一个点,即可求ab两点到LCA距离之和

环长度 = ab两点到LCA距离之和+1

思路:

  • 因为是完全二叉树 所以深度和节点序号很规律 某节点序号/2就是父节点
  • 环可以看成是从 a 出发往上走,在某个位置「拐弯」,往下走到 b。

    这个拐弯的地方就是 a 和 b 的最近公共祖先LCA

  • 第一个图 5和3相连 则它们的LCA是1  环长度=5到1距离+3到1距离+1

  • 如何找LCA?

    不断循环,每次循环比较 a 和 b 的大小:

    如果 a>b,则 a 的深度大于等于 b 的深度,那么把 a 移动到其父节点,即 a=a/2;
    如果 a<b,则 a 的深度小于等于 b 的深度,那么把 b 移动到其父节点,即 b=b/2;
    如果 a=b,则找到了LCA,退出循环。

class Solution {
public:vector<int> cycleLengthQueries(int n, vector<vector<int>>& q) {vector<int> ans;for(int i=0;i<q.size();i++){int res=1;int a=q[i][0],b=q[i][1];while(a!=b){a>b? a/=2:b/=2;res++;}ans.push_back(res);}return ans;}
};

【力扣周赛#324】6266. 使用质因数之和替换后可以取到的最小值+6267. 添加边使所有节点度数都为偶数+6268. 查询树中环的长度相关推荐

  1. LeetCode 第 58 场力扣夜喵双周赛(动态规划、马拉车算法,前后缀处理)/ 第 253 场力扣周赛(贪心,LIS)

    第 58 场力扣夜喵双周赛 两道600多 5193. 删除字符使字符串变好 题目描述 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 . 给你一个字符串 s ,请你从 s 删除 最少 ...

  2. 【力扣周赛】第342场周赛

    [力扣周赛]第342场周赛 6387:计算列车到站时间 题目描述 解题思路 6391:倍数求和 题目描述 解题思路 6390:滑动子数组的美丽值 题目描述 解题思路 6392:使数组所有元素变成1的最 ...

  3. 【力扣周赛】第340场周赛

    [力扣周赛]第340场周赛 6361:对角线上的质数 题目描述 解题思路 6360:等值距离和 题目描述 解题思路 6361:对角线上的质数 题目描述 描述:给你一个下标从 0 开始的二维整数数组 n ...

  4. 【力扣周赛】第346场周赛

    [力扣周赛]第346场周赛 6439. 删除子串后的字符串最小长度 题目描述 解题思路 6454. 字典序最小回文串 题目描述 解题思路 6441. 求一个整数的惩罚数 题目描述 解题思路 6439. ...

  5. 第二次力扣周赛:排名149 / 2046;在完赛边缘打转(总结了5点,实力还不够)

    前言: 上午10:30 - 12:00 第二次力扣周赛,最后一题也写完了,但是没有通过.完成了 3 / 4 的题,排名 149 / 2046. 赛题:https://leetcode-cn.com/c ...

  6. 第 304 场力扣周赛

    1.Introduction 平常做代码题目较少,今天迟迟不能入睡,我思考了下,确实有很大概率,对十年内做的目标,有很大可能不能实现.于是做了几道题勉强让自己心安.一边喝着牛栏山壮精神,一边写Leet ...

  7. 第 270 场力扣周赛

    第一百一十二天 --- 第 270 场力扣周赛 题目一 思路:直接模拟 细节 代码 附加 题目二 思路 细节 代码 题目一 力扣:2094. 找出 3 位偶数 思路:直接模拟 1.因为构造所有三位数, ...

  8. 第 256 场力扣周赛(状态压缩+dp,二进制子序列的动规、940)

    第 256 场力扣周赛 有事没做,来看一下题 5854. 学生分数的最小差值 题目描述 给你一个 下标从 0 开始 的整数数组 nums ,其中 nums[i] 表示第 i 名学生的分数.另给你一个整 ...

  9. 力扣周赛310场题解

    力扣周赛310场题解 前言 6176. 出现最频繁的偶数元素 6177. 子字符串的最优划分 前言 今天参加了力扣的第310场周赛,也是感觉到了这周的题的一个难度,有些题有想法,但是实际上让我去写的时 ...

最新文章

  1. linux脚本自定义赋值,JMeter——运用BeanShell给自定义的变量动态赋值
  2. AJAX技术其实就是多年前我就使用过的XMLHTTP
  3. netstat 查看端口命令
  4. 使用jackson转换类型时报Unrecognized field
  5. 我的notepad++
  6. java 反射解析xml_java反射获取xml元素
  7. linux库引入之动态库静态库(生成和使用)
  8. 网络基础3-1(细谈IP协议头, 网络层,子网划分,路由选择,数据链路层,以太网帧格式,MAC地址,再谈ARP协议)
  9. php微信拍照图库js接口,ThinkPHP微信实例——JSSDK图像接口多张图片上传下载并将图片流写入本地...
  10. linux远程日志rsyslog服务端和客户端安装(亲测)--自定义接收日志格式
  11. 无悔入华夏怎么一直显示服务器,无悔入华夏祭祀玩法怎么玩 无悔入华夏祭祀怎么触发?...
  12. excel pandas 空格_pandas 实现 Excel 常见操作 (1)
  13. 十字绣图下载_十字绣与编程有什么关系? 比你想象的更多
  14. html 游戏 消消乐,html5叠房子消消乐小游戏代码
  15. 求职时,怎样判断一家公司是否靠谱?
  16. 爬虫大作业~以爬取hao123漫画为例
  17. ovs-vsctl设置ofport不成功处理
  18. 通过刷DD-WRT固件的路由器访问猫
  19. log4j2的一些配置,为某个类某个方法单独文件打印日志,定时删除日志和springboot的logback日志单独类打印
  20. 世界正游弋于开源之海,但只有 Red Hat 从中盈利

热门文章

  1. 【Jquery】Jquery判断客户端请求来源于PC端还是移动端
  2. Android智能电视焦点控制
  3. SVN 安装使用--中文插件-下载项目
  4. [项目管理入门系列] 师傅领进门-------项目运作的一般流程(三)
  5. 这一年来在疫情下,作为沪漂的生活
  6. freemarker如何获取当前时间或者时间戳?
  7. 用python做线性规划
  8. UDP 编程中的sendto() 与recvfrom()解析(转)
  9. 【BLE】广播数据包结构讲解,五颗蓝牙芯片对比
  10. 获取JOP卡的版本与功能信息