LeetCode 670 最大交換

2021-09-25 15:56:40 字數 411 閱讀 1014

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值的各個位的值存入向量中後,最高位的值存在向量最後,即size()-1的位置,故倒著推導,從size()-2的位置往前找出最大值,同size()-1處的值交換即可,若是找出的最大值小於等於最後的值,則指標往前挪一位,找出size()-3之前的最大值同size()-2相較即可。注意,一旦找到交換後立即退出迴圈(因為只能交換一次),再重新算出新的nums即可。

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輸出成乙個數 以下幾句,完全可...

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...