标签:htm git get blog arraylist max leetcode return eve
Note:
1. Scan from the small level.
2. Only take the index larger one if same digits.
class Solution { public int maximumSwap(int num) { if (num < 12) { return num; } List<Integer> digits = new ArrayList<>(); while (num > 0) { digits.add(0, num % 10); num /= 10; } int[] rightMax = new int[digits.size()]; rightMax[digits.size() - 1] = digits.size() - 1; for (int i = digits.size() - 2; i >= 0; i--) { rightMax[i] = digits.get(rightMax[i + 1]) < digits.get(i + 1) ? i + 1 : rightMax[i + 1]; } int result = 0; boolean found = false; for (int i = 0; i < digits.size(); i++) { if (!found && i < rightMax[i] && digits.get(i) < digits.get(rightMax[i])) { result = result * 10 + digits.get(rightMax[i]); digits.set(rightMax[i], digits.get(i)); found = true; } else { result = result * 10 + digits.get(i); } } return result; } }
标签:htm git get blog arraylist max leetcode return eve
原文地址:http://www.cnblogs.com/shuashuashua/p/7472049.html