leetcode 670 最大交換(陣列)

2021-09-25 09:17:02 字數 896 閱讀 6929

1 將較大的數盡可能排前面

複雜度分析

時間複雜度:o(n^2)

空間複雜度:o(n)

class

solution

// 存在更大元素

2 排序

(1)先得到排序後的字串s_sort(逆序)

(2)從前到後比較ssort,找到第乙個不同的位置i,其中s[i]!=s_sort[i],設char c = s_sort[i]

(3)從後往前遍歷s[j],找到s[j] == c,交換s[i]s[j]即得到一次交換的最大值

複雜度分析

時間複雜度:o(n log n)

空間複雜度:o(n)

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中的數字...

Leetcode 670 最大交換

給定乙個非負整數,你至多可以交換一次數字中的任意兩位。返回你能得到的最大值。class solution 以上幾句完全可以由下句替代 string b to string num for int i 0 i b temp if i temp b i b temp 再將b輸出成乙個數 以下幾句,完全可...