最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?C++?算法題解拓展leetcode670最大交換示例

 更新時(shí)間:2022年09月14日 08:59:06   作者:AnjaVon  
這篇文章主要介紹了Java?C++算法題解拓展leetcode670最大交換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目要求

思路:模擬

Java

class Solution {
    public int maximumSwap(int num) {
        List<Integer> list = new ArrayList<>();
        while (num != 0) {
            list.add(num % 10);
            num /= 10;
        }
        int n = list.size(), res = 0;
        int[] idx = new int[n];
        for (int i = 0, j = 0; i < n; i++) {
            if (list.get(i) > list.get(j)) // 嚴(yán)格大于
                j = i;
            idx[i] = j;
        }
        for (int i = n - 1; i >= 0; i--) { // 高位開始
            if (list.get(idx[i]) != list.get(i)) {
                int tmp = list.get(idx[i]);
                list.set(idx[i], list.get(i));
                list.set(i, tmp);
                break;
            }
        }
        for (int i = n - 1; i >= 0; i--)
            res = res * 10 + list.get(i);
        return res;
    }
}
  • 時(shí)間復(fù)雜度:O(log ?num)
  • 空間復(fù)雜度:O(log ?num)

C++

class Solution {
public:
    int maximumSwap(int num) {
        vector<int> list;
        while (num != 0) {
            list.emplace_back(num % 10);
            num /= 10;
        }
        int n = list.size(), res = 0;
        int idx[n];
        for (int i = 0, j = 0; i < n; i++) {
            if (list[i] > list[j]) // 嚴(yán)格大于
                j = i;
            idx[i] = j;
        }
        for (int i = n - 1; i >= 0; i--) { // 高位開始
            if (list[idx[i]] != list[i]) {
                int tmp = list[idx[i]];
                list[idx[i]] =list[i];
                list[i] = tmp;
                break;
            }
        }
        for (int i = n - 1; i>= 0; i--)
            res = res * 10 + list[i];
        return res;
    }
};
  • 時(shí)間復(fù)雜度:O(log? num)
  • 空間復(fù)雜度:O(log ?num)

Rust

  • 這個(gè)部分代碼似乎有一點(diǎn)小問題【不用似乎就是有】……有就先有著吧……搞了半個(gè)小時(shí)也沒解決【擺爛】
impl Solution {
    pub fn maximum_swap(num: i32) -> i32 {
        let mut list = vec![];
        let mut res = num;
        while (res != 0) {
            list.push(res % 10);
            res /= 10;
        }
        let n = list.len();
        let mut idx = vec![0; n];
        let mut j = 0;
        for i in 0..n {
            if list[i] > list[j] {
                j = i;
            }
            idx[i] = j;
        }
        for k in n-1..0 {
            if list[idx[k]] != list[k] {
                list.swap(idx[k], k);
                break;
            }
        }
        for l in n-1..0 {
            res = res * 10 + list[l];
        }
        res
    }
}
  • 時(shí)間復(fù)雜度:O(log ?num)
  • 空間復(fù)雜度:O(log? num)

以上就是Java C++算法題解拓展leetcode670最大交換示例的詳細(xì)內(nèi)容,更多關(guān)于Java C++算法最大交換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

大石桥市| 新平| 资中县| 长宁县| 郓城县| 梅河口市| 镇雄县| 泰顺县| 陆丰市| 永兴县| 隆尧县| 榆林市| 昌都县| 黄石市| 定西市| 泸西县| 左云县| 许昌市| 海原县| 广宁县| 博湖县| 乐昌市| 嘉兴市| 石嘴山市| 临汾市| 罗山县| 洛扎县| 郴州市| 双辽市| 晋中市| 南安市| 吴堡县| 湄潭县| 榆林市| 永安市| 福安市| 黔西县| 三穗县| 凤冈县| 宣威市| 元朗区|