码迷,mamicode.com
首页 > 编程语言 > 详细

【数组】670. 最大交换

时间:2020-05-05 18:26:37      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:ring   image   div   solution   return   swap   val   style   size   

题目:

技术图片

 

 

解答:

1    先将数每一位拆成数组
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 < N && nums[i] <= nums[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 < N; ++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 < N; ++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 };

 

【数组】670. 最大交换

标签:ring   image   div   solution   return   swap   val   style   size   

原文地址:https://www.cnblogs.com/ocpc/p/12831486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!