欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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++算法最大交換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++類的定義和對(duì)象的創(chuàng)建詳解

    C++類的定義和對(duì)象的創(chuàng)建詳解

    本篇文章重點(diǎn)講解了兩種創(chuàng)建對(duì)象的方式:一種是在棧上創(chuàng)建,形式和定義普通變量類似;另外一種是在堆上使用 new 關(guān)鍵字創(chuàng)建,必須要用一個(gè)指針指向它,下面和小編一起來學(xué)習(xí)下面為文章的內(nèi)容
    2021-09-09
  • C++繼承的賦值轉(zhuǎn)換與菱形虛擬繼承深入詳解

    C++繼承的賦值轉(zhuǎn)換與菱形虛擬繼承深入詳解

    今天我要給大家介紹C++中更深入的內(nèi)容了,C++繼承的賦值轉(zhuǎn)換與菱形虛擬繼承。C++這門語言為了使代碼不冗余,做了些什么操作呢?C++的繼承就很好地實(shí)現(xiàn)了類層次的代碼復(fù)用,今天我就要來和大家好好聊一聊它了
    2022-08-08
  • 一文帶你搞懂C語言動(dòng)態(tài)內(nèi)存管理

    一文帶你搞懂C語言動(dòng)態(tài)內(nèi)存管理

    動(dòng)態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存。本文將通過幾個(gè)示例帶大家深入了解一下C語言的動(dòng)態(tài)內(nèi)存管理,需要的可以參考一下
    2022-11-11
  • C++算法之在無序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法

    C++算法之在無序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C++算法之在無序數(shù)組中選擇第k小個(gè)數(shù)的實(shí)現(xiàn)方法,涉及C++數(shù)組的遍歷、判斷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • 一元多項(xiàng)式加法運(yùn)算

    一元多項(xiàng)式加法運(yùn)算

    今天小編就為大家分享一篇關(guān)于一元多項(xiàng)式加法運(yùn)算,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • C語言歸排與計(jì)排深度理解

    C語言歸排與計(jì)排深度理解

    這篇文章主要為大家詳細(xì)的介紹了C語言中計(jì)數(shù)排序和歸并排序,歸并排序是創(chuàng)建在歸并操作上的一種有效的排序算法,計(jì)數(shù)排序不用比較兩個(gè)數(shù)的大小,感興趣的朋友可以參考閱讀
    2023-04-04
  • C++實(shí)現(xiàn)翻轉(zhuǎn)單詞順序

    C++實(shí)現(xiàn)翻轉(zhuǎn)單詞順序

    這篇文章給大家匯總介紹了C++實(shí)現(xiàn)翻轉(zhuǎn)單詞順序的三種方法,都非常的簡(jiǎn)單,需要的朋友可以參考下
    2016-07-07
  • c++雙向鏈表操作示例(創(chuàng)建雙向鏈、雙向鏈表中查找數(shù)據(jù)、插入數(shù)據(jù)等)

    c++雙向鏈表操作示例(創(chuàng)建雙向鏈、雙向鏈表中查找數(shù)據(jù)、插入數(shù)據(jù)等)

    這篇文章主要介紹了c++雙向鏈表操作示例,包括創(chuàng)建雙向鏈、刪除雙向鏈表、雙向鏈表中查找數(shù)據(jù)、插入數(shù)據(jù)等,需要的朋友可以參考下
    2014-05-05
  • C語言初階之?dāng)?shù)組詳細(xì)介紹

    C語言初階之?dāng)?shù)組詳細(xì)介紹

    大家好,本篇文章主要講的是C語言初階之?dāng)?shù)組詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C語言職工信息管理系統(tǒng)源碼

    C語言職工信息管理系統(tǒng)源碼

    這篇文章主要為大家詳細(xì)介紹了C語言職工信息管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論