670. Maximum Swap
Tags:
Medium
Skills:
Array
Type:
Free
June 24, 2025
04:33 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Bài toán yêu cầu bạn tìm số lớn nhất có thể thu được bằng cách hoán đổi đúng một cặp chữ số trong một số nguyên không âm. Nếu không có hoán đổi nào làm tăng giá trị, return về số ban đầu
Approach
Time and space complexity
Solution
1function maximumSwap(num: number): number {
2 const digits = num.toString().split('').map(Number);
3 const last = new Array(10).fill(-1);
4 for (let i = 0; i < digits.length; i++) {
5 last[digits[i]] = i;
6 }
7 for (let i = 0; i < digits.length; i++) {
8 for (let d = 9; d > digits[i]; d--) {
9 if (last[d] > i) {
10 [digits[i], digits[last[d]]] = [digits[last[d]], digits[i]]
11 return parseInt(digits.join(''), 10)
12 }
13 }
14 }
15 return num
16};last lưu vị trí cuối cùng xuất hiện của mỗi chữ số 0 → 9Ví dụ minh họa
2736[2][7][3][6]2 với 7 → [7][2][3][6] → Output: 72369973[9][9][7][3]9973