題目:
解答:
1 先將數每一位拆成陣列
2,若陣列為非公升序序列,則直接返回原數即可
3,否則,就找到陣列中第一次出現公升序的位置,從該位置往後找到最後乙個最大值max_val及其下標max_ind
4,從陣列頭開始找第乙個比max_val小的數的下標i,交換i與max_ind位置的數即可
1class
solution
12if (i ==n)
1316
17char max_val =nums[i];
18int max_ind =i;
19for (; i < n; ++i)
2026}27
for (i = 0; i < n; ++i)
2833}34
swap(nums[i], nums[max_ind]);
35int res = 0
;36 res =atoi(nums.c_str());
37return
res;38}
39 };
leetcode 670 最大交換(陣列)
1 將較大的數盡可能排前面 複雜度分析 時間複雜度 o n 2 空間複雜度 o n class solution 存在更大元素 2 排序 1 先得到排序後的字串s sort 逆序 2 從前到後比較s和sort,找到第乙個不同的位置i,其中s i s sort i 設char c s sort i 3...
LeetCode 670 最大交換
class solution 將num的各個位上的值存於向量中 int len res.size int k 0 for int i len 1 i 0 i 求出位置j i 1之前 包括j 的最大值 if res i 0 i 重新算出最大值 return n 思路 倒著推,因為將num值的各個位的值...
LeetCode 670 最大交換
題目 給定乙個非負整數,你至多可以交換一次數字中的任意兩位。返回你能得到的最大值 示例1 輸入 2736 輸出 7236 解釋 交換數字2和數字7。示例2 輸入 9973 輸出 9973 解釋 不需要交換。思路 先根據給定的數字,把數字的每一位拆分並放到 list 集合中,並且利用 list中的數字...