Java C++ 算法题解拓展leetcode670最大交换示例
作者:AnjaVon 时间:2022-05-18 23:31:51
题目要求
思路:模拟
Java
class Solution {
public int maximumSwap(int num) {
List<Integer> list = new ArrayList<>();
while (num != 0) {
list.add(num % 10);
num /= 10;
}
int n = list.size(), res = 0;
int[] idx = new int[n];
for (int i = 0, j = 0; i < n; i++) {
if (list.get(i) > list.get(j)) // 严格大于
j = i;
idx[i] = j;
}
for (int i = n - 1; i >= 0; i--) { // 高位开始
if (list.get(idx[i]) != list.get(i)) {
int tmp = list.get(idx[i]);
list.set(idx[i], list.get(i));
list.set(i, tmp);
break;
}
}
for (int i = n - 1; i >= 0; i--)
res = res * 10 + list.get(i);
return res;
}
}
时间复杂度:O(log num)
空间复杂度:O(log num)
C++
class Solution {
public:
int maximumSwap(int num) {
vector<int> list;
while (num != 0) {
list.emplace_back(num % 10);
num /= 10;
}
int n = list.size(), res = 0;
int idx[n];
for (int i = 0, j = 0; i < n; i++) {
if (list[i] > list[j]) // 严格大于
j = i;
idx[i] = j;
}
for (int i = n - 1; i >= 0; i--) { // 高位开始
if (list[idx[i]] != list[i]) {
int tmp = list[idx[i]];
list[idx[i]] =list[i];
list[i] = tmp;
break;
}
}
for (int i = n - 1; i>= 0; i--)
res = res * 10 + list[i];
return res;
}
};
时间复杂度:O(log num)
空间复杂度:O(log num)
Rust
这个部分代码似乎有一点小问题【不用似乎就是有】……有就先有着吧……搞了半个小时也没解决【摆烂】
impl Solution {
pub fn maximum_swap(num: i32) -> i32 {
let mut list = vec![];
let mut res = num;
while (res != 0) {
list.push(res % 10);
res /= 10;
}
let n = list.len();
let mut idx = vec![0; n];
let mut j = 0;
for i in 0..n {
if list[i] > list[j] {
j = i;
}
idx[i] = j;
}
for k in n-1..0 {
if list[idx[k]] != list[k] {
list.swap(idx[k], k);
break;
}
}
for l in n-1..0 {
res = res * 10 + list[l];
}
res
}
}
时间复杂度:O(log num)
空间复杂度:O(log num)
来源:https://juejin.cn/post/7142875009252818975
标签:Java,C++,算法,题解,最大交换
0
投稿
猜你喜欢
详解Spring Bean的配置方式与实例化
2022-01-13 05:47:51
JavaWeb文件上传下载功能示例解析
2021-09-20 08:28:58
Java多线程编程小实例模拟停车场系统
2022-07-07 06:36:29
Android开发笔记之:深入理解Cursor相关的性能问题
2021-10-31 15:06:49
c#高效率导出多维表头excel的实例代码
2022-10-17 04:45:49
Java基于正则实现的日期校验功能示例
2021-09-30 02:43:26
Flink开发IDEA环境搭建与测试的方法
2023-02-21 21:20:46
解读maven配置阿里云镜像问题
2023-02-28 11:57:56
Java数据类型的全面剖析
2022-07-09 06:51:38
Java集合的总体框架相关知识总结
2021-06-25 10:43:36
Java设计模式之动态代理模式实例分析
2022-07-07 17:55:07
Android 获取屏幕尺寸实例代码
2023-07-26 21:50:47
java采用中文方式显示时间的方法
2021-07-24 03:04:34
详解配置spring-boot-actuator时候遇到的一些小问题
2022-03-17 17:04:08
C#图片按比例缩放的实现代码
2022-12-19 03:58:16
Java Durid进行JDBC连接详解
2022-09-25 02:35:12
教你怎么用Idea打包jar包
2023-03-15 03:30:51
Flutter Recovering Stream Errors小技巧
2023-09-02 05:02:17
深入理解strcpy与memcpy的区别
2023-02-23 21:45:32
java实现动态 代理方法浅析
2023-11-28 23:33:59