每日一题 2024-1-22 最大交换
1.题目(中等)原题链接
给定一个非负整数,你 至多 可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
给定数字的范围是
2.解题思路
贪心,数字转换成字符串,从大到小排序,与原字符串从左到右对比,遇到不相同的就从原字符串倒着寻找这个字符,交换即可。
3.c++代码
class Solution {
public:
int maximumSwap(int num) {
auto s=to_string(num);
auto t=s;
ranges::sort(t,greater<>());
int n=s.length();
for(int i=0;i<n;i++){
if(s[i]!=t[i]){
int index=s.find_last_of(t[i]);
swap(s[i],s[index]);
break;
}
}
return stoi(s);
}
};
4.复杂度分析
- 时间复杂度:
。 - 空间复杂度:
。
本文来自博客园,作者:sunyafei,转载请注明原文链接:https://www.cnblogs.com/sunyafeiii/p/17979247
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理