LeetCodeWeeklyContest-155

工业组态软件Intouch(单机版)入门{第一篇} 通俗来讲Intouch就是一个能将PLC里的信号显示在画面上的软件。 阅读详情

操千曲而晓声,观千剑而后识器 ---- 《文心雕龙》

力扣的周赛自闭了,好久没写了,丢掉的改捡了。

题目传送

个人博客同步更新

Problem1 最小绝对差

  • 难度:Easy

题目

给你个整数数组 arr,其中每个元素都 不相同。
请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。

思路

  • 遍历,边找边push,只需一遍

貌似代码写复杂了

题解

#include<bits/stdc++.h>
using namespace std;
/*
	LeetCode WeeklyContest-155
*/
vector<vector<int> > minimumAbsDifference(vector<int>& arr) {
   sort(arr.begin(),arr.end());
   int n=arr.size();
   vector<vector<int> > result; 
   int min = arr[1]-arr[0];
   vector<int> tmp;
   for(int i=0;i<n-1;i++){
   		if(arr[i+1]-arr[i] < min){
   			min = arr[i+1]-arr[i];
   			result.clear();
   			tmp.push_back(arr[i]);
			tmp.push_back(arr[i+1]);
			result.push_back(tmp);
			tmp.clear();
		}
		else if(arr[i+1]-arr[i] == min){
			tmp.push_back(arr[i]);
			tmp.push_back(arr[i+1]);
			result.push_back(tmp);
			tmp.clear();
		}
		else ;
   } 
     return result;  
}

// 测试下
int main()
{
	vector<int> v;
	v.push_back(-20);		
	v.push_back(11);		
	v.push_back(26);	
	v.push_back(27);
	v.push_back(40);	
	vector<vector<int> > result = minimumAbsDifference(v);
	vector<vector<int> >::iterator rIt;
	vector<int>::iterator it;
	for(rIt = result.begin();rIt!=result.end();rIt++){
		for(it = (*rIt).begin();it!=(*rIt).end();it++){
			cout << *it << " ";
		}
		cout << endl;
	}
	
	
	return 0;
 } 



Problem 2 丑数 III

题目

请你帮忙设计一个程序,用来找出第 n 个丑数。
丑数是可以被 a 或 b 或 c 整除的 正整数。
1 <= n, a, b, c <= 10^9
1 <= a * b * c <= 10^18
本题结果在 [1, 2 * 10^9] 的范围内

  • 难度:Medium

思路

  • 无脑暴力 1 到 min ⁡ ( n ∗ a , n ∗ b , n ∗ c ) 1到\min(n*a,n*b,n*c) 1到min(n∗a,n∗b,n∗c) 超时。
  • 无脑开个数组,把 i ∗ a 、 i ∗ b 、 i ∗ c i*a、i*b、i*c i∗a、i∗b、i∗c 其中 i = 1... n i=1...n i=1...n,然后写个sort(),直接取第n个数,内存爆掉。

以上都是不可取的
计算1~m之间有多少丑数,设为cnt,然后从n开始折半查找,判断cnt与n的关系,最后直接定位到第n个丑数。
另外,如何判断1~m之间有多少丑数?公式如下:
c n t = m / a + m / b + m / c − m / l c m ( a , b ) − m / l c m ( b , c ) − m / l c m ( a , c ) + m / l c m ( l c m ( a , b ) , c ) cnt = m/a + m/b + m/c - m/lcm(a,b)- m/lcm(b,c) - m/lcm(a,c) + m/lcm(lcm(a,b),c) cnt=m/a+m/b+m/c−m/lcm(a,b)−m/lcm(b,c)−m/lcm(a,c)+m/lcm(lcm(a,b),c)
其中 l c m ( a , b ) lcm(a,b) lcm(a,b)是a、b的最小公倍数。

题解

/*
	LeetCode WeeklyContest-155
*/

#include<bits/stdc++.h> 
using namespace std;
typedef long long ll;
// 避免超范围 ,不妨都写成ll
ll gcd(int x, int y){
	if(x>y) swap(x,y);
	int r = y%x;
	if(r==1) return 1;
	while(r){
		y = x;
		x = r;
		r = y%x;
	}
	return x;
}
ll lcm(int x, int y){
	return x/gcd(x,y)*y;
}
bool countLessN(ll m,int a,int b,int c,int n){
	int cnt = m/a + m/b + m/c
	 - m/lcm(a,b) - m/lcm(b,c) - m/lcm(a,c) 
	 + m/lcm(lcm(a,b),c);
	 return cnt >= n;
}
int nthUglyNumber(int n, int a, int b, int c) {
	ll begin =1,end=2e10+5;
	while(begin+1<end){  // 注意是begin+1<end
		int mid = (begin+end)/2;
		if(countLessN(mid,a,b,c,n))
			end = mid;
		else begin=mid;
	}
	
	return end;
	
}
// 测试下
int main()
{
	int n,a,b,c;
	n = 1000000000, a = 2, b = 217983653, c = 336916467;
	cout << nthUglyNumber(n,a,b,c);
 	return 0; 
}

Problem3

题目

给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。
你可以 任意多次交换 在 pairs 中任意一对索引处的字符。
返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。

  • 难度:Medium

思路

先根据索引对建立并查集,构成若干个连通分量,每个连通分量内部排序,使其排成最小字典序,然后再将排完序的连通分量复原,就可以得到最小字典序的字符串了。

题解

#include<bits/stdc++.h>
using namespace std;
vector<int> father,sz;
int find(int x){  // 并查集  查
	return father[x]==x?x:father[x] = find(father[x]);
}
string smallestStringWithSwaps(string s,vector<vector<int> > pairs){
	int n=s.size();
	father.resize(n);
	sz.resize(n); 
	for(int i=0;i<n;i++){  // 初始化 
		father[i] = i;
		sz[i] = 1;
	}
	int n1 = pairs.size();
	for(int i=0;i<n1;i++){
		vector<int> tmp = pairs[i];
		int f1 = find(tmp[0]),f2=find(tmp[1]);
		if(f1!=f2){
			if(sz[f1]<sz[f2]){
				father[f1] = f2;
				sz[f2] += sz[f1];
			}
			else{
				father[f2] = f1;
				sz[f1] += sz[f2];
			}
		}
	}
	vector<vector<char> > charArr(n);  
	vector<vector<int> > posArr(n);
	// 并查集发挥作用 
	for(int i=0;i<n;i++){
		charArr[find(i)].push_back(s[i]);
		posArr[find(i)].push_back(i);	
	}
	// char数组排序 
	for(int i=0;i<charArr.size();i++){
		sort(charArr[i].begin(),charArr[i].end());
	}
	// 把排完序的联通块,合到一起 
	string s1(n,'\0');
	for(int i=0;i<n;i++){
		for(int j=0;j<charArr[i].size();j++){
			s1[posArr[i][j]] = charArr[i][j];
		}
	}
	
	return s1;		
}
// 测试下
int main()
{
	string s="cba";
	vector<vector<int> > v;
	vector<int> s1,s2;
	s1.push_back(0);
	s1.push_back(1);
	s2.push_back(1);
	s2.push_back(2);
	v.push_back(s1),v.push_back(s2);
	cout << smallestStringWithSwaps(s,v) << endl; 
	return 0;
}
 

Problem4 项目管理

略

别再卡在Google验证了!用Header Editor插件5分钟搞定TryHackMe注册(附最新.json规则) 本文提供了使用Header Editor插件快速解决TryHackMe注册时Google验证失败问题的详细指南。通过导入特定的JSON规则文件,用户可以轻松绕过网络限制,5分钟内完成账号注册,无需复杂设置。文章包含完整的配置步骤、常见问题解决方案以及安全使用建议。 阅读详情

相关推荐

MiniMax H3本地部署与ComfyUI集成实战:从环境配置到提示词优化

文本到视频生成是AI内容创作领域的关键技术,它基于扩散模型等深度学习原理,将自然语言描述转化为连贯的动态视觉序列。这项技术的核心价值在于大幅降低了视频制作的门槛,为短视频创作、概念可视化、教育内容生成等场景提供了高效工具。在实际工程实践中,成功部署和运行此类模型,如近期备受关注的MiniMax H3,需要精准处理环境配置、显存优化和提示词工程等环节。其中,解决“CUDA error: no kernel image is available”等版本兼容性问题,以及针对“8G显存”等有限资源进行参数调优,是确

weixin_33674976的博客 479

[leetcode]1202.交换字符串中的元素

给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1: 输入:s = "dcab", pairs = [[0,3],[1,2]] 输出:"bacd" 解释: 交换 s[0] 和 s[3], s = "bcad" 交换 s[1] 和 s[2], s = "bacd" 示例

RegulusF的博客 641

[前沿技术] AMD FSR 1.0源码解析:EASU算法实现细节与优化策略

本文深入解析了AMD FSR 1.0技术的核心——EASU(边缘自适应空间升频)算法。通过剖析其源码,详细阐述了EASU如何利用12-tap采样窗口、基于Lanczos滤波器的多项式近似以及自适应的边缘检测机制,在无需AI模型的情况下实现高质量图像放大。文章重点揭示了其极致的GPU优化策略,包括寄存器利用、采样优化和避免动态分支,为理解高性能图形算法提供了绝佳范例。

docker7nomad的博客 540

1202. Smallest String With Swaps

LeetCode的第1202道题目。You are given a string s, and an array of pairs of indices in the string pairs where pairs[i] = [a, b] indicates 2 indices(0-indexed) of the string.You can swap the characters at any pair of indices in the given pairs any number of time。

超悦人生 550

高压脉冲发生器的各种电路图

高压脉冲发生器的各种电路图

qq_65102825的博客 5904

Qt上位机实战:5步搞定STM32 IAP固件升级(附拖拽文件处理技巧)

本文详细介绍了如何使用Qt开发STM32 IAP固件升级上位机。通过五个核心步骤,包括理解IAP机制、搭建Qt环境、实现拖拽文件加载、封装串口通信以及设计可靠通信协议,帮助开发者快速构建一个稳定、易用且支持图形化操作的固件升级工具,显著提升嵌入式产品开发与维护效率。

ss78901的博客 1081

并查集的妙用——Leetcode 1202

并查集的妙用——Leetcode 1202 给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1: 输入:s = "dcab",...

weixin_43590611的博客 539

【论文阅读笔记】One Shot 3D Photography

论文主页:https://facebookresearch.github.io/one_shot_3d_photography/ 代码地址:https://github.com/facebookresearch/one_shot_3d_photography   该3D照片方向,由于刚入门,所以会倾向于翻译文章。每个操作上的选择,及为什么不进行另外操作的原因都如数放上。 论文小结   本作的工作是从单张RGB图片生成一个移动视角的3D照片。   其管道大致如下: 由RGB图像通过单目深度估计网络估计深度图

时光机 °的博客 1839

【leetcode】交换字符串中的元素(并查集)

给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1: 输入:s = “dcab”, pairs = [[0,3],[1,2]] 输出:“bacd” 解释: 交换...

Skyed_blue的博客 906

可乐学习NVMe之一:为什么SSD需要NVMe

1. NVMe SSD 结构简图 整体来看,NVMe SSD可以分为三部分,host端的驱动NVMe Driver、PCIe+NVMe实现的控制器以及NAND Flash+DDR4/DDR5存储介质。 芯片回片后Host侧软件或者驱动开发主要在应用层,通过一些测试工具进行benchmark跑分测试,performance性能分析,latency分析、stress-testing等等: 那么,接下来阐述为什么SSD需要NVMe,并再后续的文章介绍NVMe协议分析,个人针对协议的理解,如果有不当之处,还请各

Lucky 3169

HFSS线圈仿真避坑指南:从建模到寄生参数分析的完整流程

本文详细介绍了HFSS线圈仿真的完整流程,从精准建模到寄生参数优化,特别针对Ansys Electronics Desktop用户提供实用指南。涵盖线圈几何构建、材料属性配置、端口激励设置及寄生电阻与电感分析等关键步骤,帮助工程师避免常见错误,提升仿真精度与效率。

weixin_29209801的博客 550

【算法】交换交换字符串中的元素-并查集

2021-05-19 问题描述 给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1: 输入:s = “dcab”, pairs = [[0,3],[1,2]] 输出:“bacd” 解释: 交换 s[0] 和 s[3], s = “bcad” 交换 s[1] 和 s[2],

shellhard的博客 263

2025B卷最新华为OD机试持续收录中 - 真题题库清单,按考点划分(Python / JS / C++ / JAVA / C语言)

2025B卷最新华为OD机试持续收录中 - 真题题库清单,按考点划分(Python / JS / C++ / JAVA / C语言)

算法大师! 3058

LeetCode - 1202. 交换字符串中的元素

描述 给你一个字符串s,以及该字符串中的一些「索引对」数组pairs,其中pairs[i] =[a, b]表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在pairs中任意一对索引处的字符。 返回在经过若干次交换后,s可以变成的按字典序最小的字符串。 示例 1: 输入:s = "dcab", pairs = [[0,3],[1,2]] 输出:"bacd" 解释: 交换 s[0] 和 s[3], s = "bcad" 交换 s[1] 和 s[2], s =...

一只羊 319

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode[1202]交换字符串中的元素

java解法,有源码,有过程,有讲解

月亮被咬碎成星星的博客 698

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

leetcode 1202. Smallest String With Swaps(交换得到最小的字符串)

You are given a string s, and an array of pairs of indices in the string pairs where pairs[i] = [a, b] indicates 2 indices(0-indexed) of the string. You can swap the characters at any pair of indices in the given pairs any number of times. Return the lexic

蓝羽飞鸟的博客 455

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

QGridLayout交换两个QWidget

交换QGridLayout中的两个QWidget. github传送门:https://github.com/shaoguangwu/SwapGridLayoutWidget 亲测有效。

WSG的博客--盛年不重来,一日难再晨.及时当勉励,岁月不待人. 1194

交换字符串中的元素

给你一个字符串 sss,以及该字符串中的一些「索引对」数组 pairspairspairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 000 开始)。 你可以 任意多次交换 在 pairspairspairs 中任意一对索引处的字符。 返回在经过若干次交换后,sss 可以变成的按字典序最小的字符串。 示例 1: 输入:s = "dcab", pairs = [[0,3],[1,2]] 输出:"bacd" 解释: 交换 s[0] 和 s[3], s = "bcad" 交换 s

Amber的博客 698

leetcode1202. 交换字符串中的元素

题目描述: 给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1: 输入:s = “dcab”, pairs = [[0,3],[1,2]] 输出:“bacd” 解释: 交换 s[0] 和 s[3], s = “bcad” 交换 s[1] 和 s[2], s = “bacd

weixin_42051691的博客 233

分享几道适合用来面试的 LeetCode 算法题

“ 阅读本文大概需要 3 分钟。 ”Hi,大家好,这几天公司忙着年会,整个大部门去西安出差了几天,今天刚刚回来,所以我这几天没有怎么搭理公号。年会那会也忙不少事情,由于今...

静觅 1216

一、最小绝对差(Weekly Contest 155)

题目描述: 给你个整数数组 arr,其中每个元素都 不相同。 请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 示例 1: 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[3,4]] 示例 2: 输入:arr = [1,3,6,10,15] 输出:[[1,3]] 示例 3: 输入:arr = [3,8,-10,23,19,-4,-14,27] 输出:[[-14,-...

qq_34446716的博客 372

[leetcode] 1202. Smallest String With Swaps

Description You are given a string s, and an array of pairs of indices in the string pairs where pairs[i] = [a, b] indicates 2 indices(0-indexed) of the string. You can swap the characters at any pair of indices in the given pairs any number of times. Retu

Learning from the mistakes 276

LeetCode:1202. Smallest String With Swaps交换字符串中的元素(C语言)

题目描述: 给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 示例 1: 输入:s = “dcab”, pairs = [[0,3],[1,2]] 输出:“bacd” 解释: 交换 s[0] 和 s[3], s = “bcad” 交换 s[1] 和 s[2], s = “bacd

C/C++攻城狮 422

Leetcode-1202. 交换字符串中的元素 Smallest String With Swaps (并查集/DFS) -超详细python

题目 给你一个字符串 s,以及该字符串中的一些「索引对」数组 pairs,其中 pairs[i] = [a, b] 表示字符串中的两个索引(编号从 0 开始)。 你可以 任意多次交换 在 pairs 中任意一对索引处的字符。 返回在经过若干次交换后,s 可以变成的按字典序最小的字符串。 链接:https://leetcode.com/problems/smallest-string-with-swaps/ You are given a string s, and an array of pairs o

JamieLuo的博客 459

【简单】1200. 最小绝对差

【题目】 给你个整数数组 arr,其中每个元素都 不相同。请你找到所有具有最小绝对差的元素对,并且按升序的顺序返回。 来源:leetcode 链接:https://leetcode-cn.com/problems/minimum-absolute-difference/ 【示例1】 输入:arr = [4,2,1,3] 输出:[[1,2],[2,3],[3,4]] 【示例2】 输入:arr = [1,3,6,10,15] 输出:[[1,3]] 【示例3】 输入:arr = [3,8,-10,23,19,-4

... 393

LeetCode第155场周赛:5199. 交换字符串中的元素(并查集)

给你一个字符串s,以及该字符串中的一些「索引对」数组pairs,其中pairs[i] =[a, b]表示字符串中的两个索引(编号从 0 开始)。 你可以任意多次交换在pairs中任意一对索引处的字符。 返回在经过若干次交换后,s可以变成的按字典序最小的字符串。 示例 1: 输入:s = "dcab", pairs = [[0,3],[1,2]] 输出:"bacd...

信仰.的博客 724
上一篇: 2019数学建模赛后感悟:一次灵魂与肉体的交织&&一次参赛终身收益
下一篇: 联想Y7000装Ubuntu双系统路上的坑
SinclairWang
博客等级 码龄8年 63粉丝 109原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值