LeetCodeWeeklyContest-155

WorkBuddy 集成 飞书CLI,全程10分钟,丝滑无比,老板要注意了... 飞书CLI实测:10分钟实现AI操控飞书办公 飞书CLI作为命令行工具,让用户通过简单命令完成飞书各项操作。本文记录了从安装到使用的完整过程:一键安装仅需10分钟,支持200多条命令覆盖飞书全部功能,AI结合后可实现自然语言办公。实测中成功用语音指令创建了7天发文计划日程,验证了其便捷性。虽然首次认证存在超时问题,但整体体验流畅。该工具将复杂操作简化为自然语言指令,大幅提升办公效率,特别适合需要频繁使用飞书的用户。后续还将探索更多自动化办公场景。 阅读详情

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

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

题目传送

个人博客同步更新

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) 1min(na,nb,nc) 超时。
  • 无脑开个数组,把 i ∗ a 、 i ∗ b 、 i ∗ c i*a、i*b、i*c iaibic 其中 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/cm/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 项目管理

Marin说PCB之LPDDR5的布线注意事项--01 以上就是本期所有内容了,有些是通用的LPDDR5的设计准则,有的是针对单板的设计规则,严格意义说是没有哪一种规则是完全适用的LPDDR5的 通用规则的,不同的单板可能板厚,板材,层数,SOC以及DDR的型号都是不同的,一般的做法就是严格按照SOC手册上的LPDDR5的要求加上仿真同事给的建议修改优化就好了,我们下期文章不见不散。我们知道想要做好一个LPDDR颗粒,需要考虑的是因素有很多例如,电源完整性,信号完整性,层叠的设计,布局的摆放,布线的合理规划,去耦电容的摆放等等。 阅读详情

相关推荐

自建智能算力中心第三方算力租赁的深度分析

自建智算中心和第三方算力租赁的主要区别如下:对比维度自建算力中心第三方算力租赁初期成本数千万至数亿元硬件采购+机房基建零硬件投入,按需付费(如1元/卡时)部署速度6-12个月(采购、部署、调试)即时开通,分钟级资源调度运维难度需专业IT团队,承担断电、故障等风险服务商全托管,SLA保障99.95%可用性弹性扩展扩容需重新采购硬件,周期长、成本高支持秒级弹性伸缩,应对流量峰值技术迭代硬件更新周期长,易被淘汰自动升级。

2501_90999758的博客 2274

[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的博客 640

基于STM32、HAL库的 CH9102X USB转UART收发器 驱动程序设计

/ 或 UART_HWCONTROL_RTS_CTS。// 其他函数实现类似,使用HAL_UART_Transmit_IT, HAL_UART_Receive_IT等。UART_TXD <---> USARTx_RX (STM32接收)UART_RXD <---> USARTx_TX (STM32发送)* @param huart: UART句柄指针。* @param huart: UART句柄指针。* @param huart: UART句柄指针。* @param huart: UART句柄指针。

corlin6688的博客 491

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

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

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

Skyed_blue的博客 902

并查集的妙用——Leetcode 1202

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

weixin_43590611的博客 536

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

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的博客 260

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 =...

一只羊 317

交换字符串中的元素

给你一个字符串 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的博客 695

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

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

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

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

蓝羽飞鸟的博客 453

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的博客 229

QGridLayout交换两个QWidget

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

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

编写一个程序,找出第 n 个丑数。

编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数2, 3, 5 的正整数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。 说明: 1是丑数。 n不超过1690。 题目链接 :https://leetcode-cn.com/problems/ugly-number-ii解题思路: ...

qfc8930858的博客 1000

leetcode】丑数III (二分枚举+容斥定理)

请你帮忙设计一个程序,用来找出第 n 个丑数。 丑数是可以被 a 或 b 或 c 整除的 正整数。 示例 1: 输入:n = 3, a = 2, b = 3, c = 5 输出:4 解释:丑数序列为 2, 3, 4, 5, 6, 8, 9, 10… 其中第 3 个是 4。 示例 2: 输入:n = 4, a = 2, b = 3, c = 4 输出:6 解释:丑数序列为 2, 3, 4, 6, 8...

Skyed_blue的博客 703

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的博客 456

Aqara空调伴侣P3深度评测:双平台智能控制、红外学习电量监测全解析

智能家居的核心在于设备间的稳定联动自动化控制,其原理是通过统一的通信协议将传感器、控制器执行器连接,实现数据采集、逻辑判断指令执行。这项技术的价值在于提升生活便利性、能源管理效率家居安全性。在家庭自动化场景中,空调控制是高频需求,传统方式依赖手动操作,无法实现基于环境感知的智能调节。Aqara空调伴侣P3作为一款集成度高的智能硬件,通过内置红外学习模块解决了非智能空调的接入问题,并凭借双平台支持降低了生态绑定风险。设备集成的温湿度传感器电量统计功能,为自动化场景能耗管理提供了数据基础,例如可根据

weixin_30254435的博客 888

一、最小绝对差(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

【简单】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: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++攻城狮 418

[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 275

2007-2022商业银行绿色信贷数据绿色信贷余额贷款总额绿色信贷比率不良贷款率

2007-2022商业银行绿色信贷数据绿色信贷余额贷款总额绿色信贷比率 本数据共包含13个页签:绿色信贷余额期末、贷款总额、绿色信贷比率、总资产收益率、流动性比率、不良贷款率、拨备覆盖率、银行总资产、资本充足率、资产负债率、营收增长率、成本收入比、权益乘数2007-2021注意:因为披露口径等问题,数据存在一定的客观缺失。1、数据来源:公司年报、可持续发展报告、社会责任报告2、数据范围:36家上市银行北京银行、常熟银行、成都银行、工商银行、光大银行、贵阳银行、杭州银行、华夏银行、建设银行、江苏银行、江阴银行、交通银行、民生银行、南京银行、宁波银行、农业银行、平安银行、浦发银行、青岛银行、青农商行、上海银行、苏农银行、苏州银行、无锡农村商业银行、西安银行、兴业银行、邮储银行、渝农商行、张家港行、长沙银行、招商银行、浙商银行、郑州银行、中国银行、中信银行、紫金银行3、数据时间:2007-2022

基于halocon+c++的芯片缺陷检测系统+源码(毕业设计&课程设计&项目开发)

基于halocon芯片缺陷检测系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~基于halocon芯片缺陷检测系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~基于halocon芯片缺陷检测系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~基于halocon芯片缺陷检测系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~

上一篇: 2019数学建模赛后感悟:一次灵魂与肉体的交织&&一次参赛终身收益
下一篇: 联想Y7000装Ubuntu双系统路上的坑
SinclairWang
博客等级 码龄8年 63粉丝 109原创
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值