国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

算法leetcode|66. 加一(rust重拳出擊)

這篇具有很好參考價值的文章主要介紹了算法leetcode|66. 加一(rust重拳出擊)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。



66. 加一:

給定一個由 整數(shù) 組成的 非空 數(shù)組所表示的非負整數(shù),在該數(shù)的基礎(chǔ)上加一。

最高位數(shù)字存放在數(shù)組的首位, 數(shù)組中每個元素只存儲單個數(shù)字。

你可以假設(shè)除了整數(shù) 0 之外,這個整數(shù)不會以零開頭。

樣例 1:

輸入:
	
	digits = [1,2,3]
	
輸出:
	
	[1,2,4]
	
解釋:
	
	輸入數(shù)組表示數(shù)字 123。

樣例 2:

輸入:
	
	digits = [4,3,2,1]
	
輸出:
	
	[4,3,2,2]
	
解釋:
	
	輸入數(shù)組表示數(shù)字 4321。

樣例 3:

輸入:
	
	digits = [0]
	
輸出:
	
	[1]

提示:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9

分析:

  • 面對這道算法題目,二當(dāng)家的再次陷入了沉思。
  • 最開始閃過一個念頭,直接拿數(shù)組的末位,加上一不就完事了?
  • 雖然是個簡單題,但也不能太不當(dāng)回事了。
  • 如果最后一位不是9,那的確就完事了,但如果是9的話,就要產(chǎn)生進位,而不是簡單的加一了。
  • 進位之后,前一位就要加一,又有可能產(chǎn)生進位,所以這道題主要就是處理進位。
  • 最終有可能所有的數(shù)字都是9,從末尾一路進位到頭,空間不夠了,這種情況下就只能申請新的空間了,要多一位出來。
  • 分析參數(shù)有三種可能性:
    1. 末尾沒有 9,例如 [1,2,3],那么我們直接將末尾的數(shù)加一,得到 [1,2,4] 并返回。
    2. 末尾有若干個 9,例如 [1,2,3,9,9],那么我們只需要逆向找出第一個不為 9 的元素,即 3,將該元素加一,同時途中的 9 都變?yōu)?,得到 [1,2,4,0,0] 并返回。
    3. 所有元素都是 9,例如 [9,9,9,9,9],那么答案為 [1,0,0,0,0,0]。我們只需要構(gòu)造一個長度比參數(shù)長度多 1 的新數(shù)組,將首元素置為 1,其余元素置為 0 即可。
  • 所以這道題可以這樣處理,從數(shù)組末位逆向查找第一個不是 9 的數(shù)字,加一,途中是 9 的位都變成0,進位。
  • 如果所有的數(shù)字都是 9,那么直接申請新的空間,比源數(shù)組長度加一,然后首位賦值為1即可。

題解:

rust:

impl Solution {
    pub fn plus_one(mut digits: Vec<i32>) -> Vec<i32> {
        let n = digits.len();

        for i in (0..n).rev() {
            if digits[i] == 9 {
            	// 進位變?yōu)?
                digits[i] = 0;
            } else {
            	// 第一個不是9的位
                digits[i] += 1;
                return digits;
            }
        }

        // digits 中所有的元素均為 9
        let mut ans = vec![0; n + 1];
        ans[0] = 1;
        return ans;
    }
}

go:

func plusOne(digits []int) []int {
    n := len(digits)

	for i := n - 1; i >= 0; i-- {
		if digits[i] == 9 {
			// 進位變?yōu)?
			digits[i] = 0
		} else {
			// 第一個不是9的位
			digits[i]++
			return digits
		}
	}

	// digits 中所有的元素均為 9
	digits = make([]int, n+1)
	digits[0] = 1
	return digits
}

c++:

class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        const int n = digits.size();

        for (int i = n - 1; i >= 0; --i) {
            if (digits[i] == 9) {
                // 進位變?yōu)?
                digits[i] = 0;
            } else {
                // 第一個不是9的位
                ++digits[i];
                return digits;
            }
        }

        // digits 中所有的元素均為 9
        vector<int> ans(n + 1);
        ans[0] = 1;
        return ans;
    }
};

python:

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        n = len(digits)

        for i in range(n - 1, -1, -1):
            if digits[i] == 9:
                # 進位變?yōu)?
                digits[i] = 0
            else:
                # 第一個不是9的位
                digits[i] += 1
                return digits

        # digits 中所有的元素均為 9
        return [1] + [0] * n


java:

class Solution {
    public int[] plusOne(int[] digits) {
        final int n = digits.length;

        for (int i = n - 1; i >= 0; --i) {
            if (digits[i] == 9) {
                // 進位變?yōu)?
                digits[i] = 0;
            } else {
                // 第一個不是9的位
                ++digits[i];
                return digits;
            }
        }

        // digits 中所有的元素均為 9
        int[] ans = new int[n + 1];
        ans[0] = 1;
        return ans;
    }
}

非常感謝你閱讀本文~
歡迎【點贊】【收藏】【評論】三連走一波~
放棄不難,但堅持一定很酷~
希望我們大家都能每天進步一點點~
本文由 二當(dāng)家的白帽子:https://le-yi.blog.csdn.net/ 博客原創(chuàng)~文章來源地址http://www.zghlxwxcb.cn/news/detail-622195.html


到了這里,關(guān)于算法leetcode|66. 加一(rust重拳出擊)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 算法leetcode|75. 顏色分類(rust重拳出擊)

    給定一個包含紅色、白色和藍色、共 n 個元素的數(shù)組 nums , 原地 對它們進行排序,使得相同顏色的元素相鄰,并按照紅色、白色、藍色順序排列。 我們使用整數(shù) 0 、 1 和 2 分別表示紅色、白色和藍色。 必須在不使用庫內(nèi)置的 sort 函數(shù)的情況下解決這個問題。 n == nums.length

    2024年02月10日
    瀏覽(16)
  • 算法leetcode|65. 有效數(shù)字(rust重拳出擊)

    算法leetcode|65. 有效數(shù)字(rust重拳出擊)

    有效數(shù)字 (按順序)可以分成以下幾個部分: 一個 小數(shù) 或者 整數(shù) (可選)一個 \\\'e\\\' 或 \\\'E\\\' ,后面跟著一個 整數(shù) 小數(shù) (按順序)可以分成以下幾個部分: (可選)一個符號字符( \\\'+\\\' 或 \\\'-\\\' ) 下述格式之一: 至少一位數(shù)字,后面跟著一個點 \\\'.\\\' 至少一位數(shù)字,后面跟著一個

    2024年02月15日
    瀏覽(20)
  • 算法leetcode|91. 解碼方法(rust重拳出擊)

    一條包含字母 A-Z 的消息通過以下映射進行了 編碼 : 要 解碼 已編碼的消息,所有數(shù)字必須基于上述映射的方法,反向映射回字母(可能有多種方法)。例如, \\\"11106\\\" 可以映射為: \\\"AAJF\\\" ,將消息分組為 (1 1 10 6) \\\"KJF\\\" ,將消息分組為 (11 10 6) 注意,消息不能分組為 (1 11 06) ,因

    2024年02月05日
    瀏覽(20)
  • 算法leetcode|57. 插入?yún)^(qū)間(rust重拳出擊)

    給你一個 無重疊的 ,按照區(qū)間起始端點排序的區(qū)間列表。 在列表中插入一個新的區(qū)間,你需要確保列表中的區(qū)間仍然有序且不重疊(如果有必要的話,可以合并區(qū)間)。 0 = intervals.length = 10 4 intervals[i].length == 2 0 = intervals[i][0] = intervals[i][1] = 10 5 intervals 根據(jù) intervals[i][0] 按

    2024年02月09日
    瀏覽(25)
  • 算法leetcode|85. 最大矩形(rust重拳出擊)

    算法leetcode|85. 最大矩形(rust重拳出擊)

    給定一個僅包含 0 和 1 、大小為 rows x cols 的二維二進制矩陣,找出只包含 1 的最大矩形,并返回其面積。 rows == matrix.length cols == matrix[0].length 1 = row, cols = 200 matrix[i][j] 為 ‘0’ 或 ‘1’ 面對這道算法題目,二當(dāng)家的再次陷入了沉思。 要不是剛做過 84. 柱狀圖中最大的矩形 這

    2024年02月08日
    瀏覽(18)
  • 算法leetcode|89. 格雷編碼(rust重拳出擊)

    n 位格雷碼序列 是一個由 2 n 個整數(shù)組成的序列,其中: 每個整數(shù)都在范圍 [0, 2 n - 1] 內(nèi)(含 0 和 2 n - 1) 第一個整數(shù)是 0 一個整數(shù)在序列中出現(xiàn) 不超過一次 每對 相鄰 整數(shù)的二進制表示 恰好一位不同 ,且 第一個 和 最后一個 整數(shù)的二進制表示 恰好一位不同 給你一個整數(shù)

    2024年02月04日
    瀏覽(30)
  • 算法leetcode|79. 單詞搜索(rust重拳出擊)

    算法leetcode|79. 單詞搜索(rust重拳出擊)

    給定一個 m x n 二維字符網(wǎng)格 board 和一個字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個單元格內(nèi)的字母不允許被重復(fù)使用。

    2024年02月09日
    瀏覽(21)
  • 算法leetcode|55. 跳躍游戲(rust重拳出擊)

    給定一個非負整數(shù)數(shù)組 nums ,你最初位于數(shù)組的 第一個下標(biāo) 。 數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最后一個下標(biāo)。 1 = nums.length = 3 * 10 4 0 = nums[i] = 10 5 面對這道算法題目,二當(dāng)家的再次陷入了沉思。 可能想到要暴力嘗試或者是雙循環(huán)

    2024年02月08日
    瀏覽(50)
  • 算法leetcode|70. 爬樓梯(rust重拳出擊)

    假設(shè)你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 1 = n = 45 面對這道算法題目,二當(dāng)家的再次陷入了沉思。 可以爬一階或者兩階臺階,那也就是說,除了初始位置,和第一階臺階,到達其他階臺階 n 的方式

    2024年02月12日
    瀏覽(20)
  • 算法leetcode|72. 編輯距離(rust重拳出擊)

    算法leetcode|72. 編輯距離(rust重拳出擊)

    給你兩個單詞 word1 和 word2 , 請返回將 word1 轉(zhuǎn)換成 word2 所使用的最少操作數(shù) 。 你可以對一個單詞進行如下三種操作: 插入一個字符 刪除一個字符 替換一個字符 0 = word1.length, word2.length = 500 word1 和 word2 由小寫英文字母組成 面對這道算法題目,二當(dāng)家的再次陷入了沉思。 編

    2024年02月12日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包