leetcode
来源:互联网 发布:小米note双卡设置网络 编辑:程序博客网 时间:2024/06/04 01:31
题目
Given a non-negative integer, you could swap two digits at most once to get the maximum valued number. Return the maximum valued number you could get.
Example 1:
Input: 2736Output: 7236Explanation: Swap the number 2 and the number 7.
Example 2:
Input: 9973Output: 9973Explanation: No swap.
Note:
- The given number is in the range [0, 108]
分析及解答
- 高位的数字变大,对于整个数的影响是很大的。
- 同时,交换时,应将对于对于低位的影响最小化。(交换导致低位变小)
public int maximumSwap(int num) {if (num <= 10) {return num;}//转成字符串,更方便处理。char[] strArr = String.valueOf(num).toCharArray();char max = '0';int[] dp = new int[strArr.length];//dp[i]存储 i 后面的最大的数字。dp[strArr.length - 1] = strArr.length - 1;for (int i = strArr.length - 1; i >= 0; i--) {if (max < strArr[i]) { // 不选择等于。(只有比其大的数才有交换意义)max = strArr[i];dp[i] = i;} else {dp[i] = dp[i-1];}}for (int i = 0; i < dp.length; i++) {if (dp[i] > i && strArr[i] != strArr[dp[i]]) {char tmp = strArr[i];strArr[i] = strArr[dp[i]];strArr[dp[i]] = tmp;break; //忘记加,导致bug.}}return Integer.valueOf(new String(strArr));}
阅读全文
1 0
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- leetcode
- php网站开发常见的几种攻击以及解决方案
- RPC协议之报Unknow Source的错误
- Linux学习(七)日志、备份和启动管理
- 装饰模式
- node.js依赖express解析post请求四种数据格式()
- leetcode
- Python3.5——函数式编程之参数详解
- CentOS防火墙开放和关闭端口(iptables)
- 微信小程序----组件之view
- 泛型
- 串口下载代码CH340驱动安装
- 感知器
- linux设备驱动模型--class
- bzoj4952 [Wf2017]Need for Speed(二分答案)