【数组】670. 最大交换
2021-01-29 17:15
标签:ring image div solution return swap val style size 题目: 解答: 1 先将数每一位拆成数组 【数组】670. 最大交换 标签:ring image div solution return swap val style size 原文地址:https://www.cnblogs.com/ocpc/p/12831486.html
2,若数组为非升序序列,则直接返回原数即可
3,否则,就找到数组中第一次出现升序的位置,从该位置往后找到最后一个最大值max_val及其下标max_ind
4,从数组头开始找第一个比max_val小的数的下标i,交换i与max_ind位置的数即可 1 class Solution {
2 public:
3 int maximumSwap(int num)
4 {
5 string nums = to_string(num);
6 int i = 1;
7 int N = nums.size();
8 while (i 1])
9 {
10 ++i;
11 }
12 if (i == N)
13 {
14 return num;
15 }
16
17 char max_val = nums[i];
18 int max_ind = i;
19 for (; i i)
20 {
21 if (nums[i] >= max_val)
22 {
23 max_val = nums[i];
24 max_ind = i;
25 }
26 }
27 for (i = 0; i i)
28 {
29 if (nums[i] max_val)
30 {
31 break;
32 }
33 }
34 swap(nums[i], nums[max_ind]);
35 int res = 0;
36 res = atoi(nums.c_str());
37 return res;
38 }
39 };
上一篇:【数组】560. 和为K的子数组
下一篇:Java 之反射