# 2566. Maximum Difference by Remapping a Digit ###### tags: `Leetcode` `Easy` Link: https://leetcode.com/problems/maximum-difference-by-remapping-a-digit/description/ ## 思路 ### 思路一 $O(n)$ $O(n)$ 找到第一个非9的数字 我们要将它全部替换成9 就会得到maxValue 找到第一个非0的数字 将它全部替换成0 就会得到minValue ### 思路二 $O(N)$ $O(1)$ 尝试把所有数字0...9挨个换成0或9 找出他们中的最大最小值 求差就是答案 ## Code ### 思路一 ```java= class Solution { public int minMaxDifference(int num) { char[] val = String.valueOf(num).toCharArray(); char[] temp = String.valueOf(num).toCharArray(); //max char remap = '9'; for(int i=0; i<val.length; i++){ if(val[i]!='9'){ remap = val[i]; break; } } for(int i=0; i<val.length; i++){ if(temp[i]==remap){ temp[i] = '9'; } } int max = Integer.valueOf(String.valueOf(temp)); //min remap = '0'; for(int i=0; i<val.length; i++){ if(val[i]!='0'){ remap = val[i]; break; } } for(int i=0; i<val.length; i++){ if(val[i]==remap){ val[i] = '0'; } } int min = Integer.valueOf(String.valueOf(val)); return max-min; } } ``` ### 思路二 ```java= class Solution { public int minMaxDifference(int num) { int maxVal = num, minVal = num; for(int i=0; i<=9; i++){ int hi = 0, lo = 0, mul = 1, n = num; while(n>0){ boolean replace = (n%10==i); hi += mul*(replace?9:n%10); lo += mul*(replace?0:n%10); n /= 10; mul *= 10; } maxVal = Math.max(hi, maxVal); minVal = Math.min(lo, minVal); } return maxVal-minVal; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up