给定一个非负整数,你至多可以交换一次数字中的任意两位。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-swap 4 ms 6.2 MB
1. 题目
返回你能得到的最大值。示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 10^8]
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
class Solution { public: int maximumSwap(int num) { string s = to_string(num); int i, n = s.size(), maxnum = -1, maxid; vector<int> rightMaxidx(n,-1); for(i = n-1; i >= 0; --i) { if(s[i]-'0' > maxnum) { maxnum = s[i]-'0'; maxid = i; } rightMaxidx[i] = maxid; } for(i = 0; i < n; ++i) { if(rightMaxidx[i] == i || s[i] == s[rightMaxidx[i]]) continue; swap(s[i],s[rightMaxidx[i]]); break; } return stoi(s); } };
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算