/*
* @lc app=leetcode id=670 lang=cpp
*
* [670] Maximum Swap
*/
// @lc code=start
class Solution {
public:
struct Node {
int v;
int loc;
Node(int a, int b): v(a), loc(b) {}
};
static bool cmp(const Node & a, const Node & b){
if(a.v == b.v){
return a.loc < b.loc;
}
return a.v < b.v;
}
int maximumSwap(int num) {
vector<Node> number;
int t = num;
int loc = 1;
while(t>0){
number.push_back(Node(t%10, loc++));
t /= 10;
}
vector<Node> ans(number);
sort(number.begin(), number.end(), cmp);
for(int i=ans.size()-1;i>0;i--){
if(ans[i].v == number[i].v) continue;
//swap(ans[i], ans[number[i].loc-1]);
for(int j=0;j<i;j++){
if(ans[j].v == number[i].v){
swap(ans[j], ans[i]);
break;
}
}
break;
}
int res = 0;
for(int i=ans.size()-1;i>=0; i--){
res *=10;
res += ans[i].v;
}
return res;
}
};
// @lc code=end
No.262 - leetcode[670] Maximum Swap
最新推荐文章于 2024-04-23 17:09:00 发布