LeetCode初級演算法之陣列 加一

2021-09-29 21:11:16 字數 1267 閱讀 5988

題目描述

題目描述:

給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。

最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。

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

示例 1:

輸入: [1,2,3]

輸出: [1,2,4]

解釋: 輸入陣列表示數字 123。

示例 2:

輸入: [4,3,2,1]

輸出: [4,3,2,2]

解釋: 輸入陣列表示數字 4321。

思路一: 大整數類的加法思想簡化

這個題我的初步思路是想起了大整數類的加法,就是給定兩個大整數相加求和,可能是想的太複雜了,加一而已。 具體實現就是,由於加一可能導致最後在前面進製,所以先把陣列逆序,然後從第一位加一,進行求和運算,如果大於9,改0進製。這樣最後一位單獨判斷,如果大於9,改0, 陣列加進乙個1,最後再逆回來。 雖然這個想法能a掉,但是有點大材小用了。

class

solution

digits[len-1]

= digits[len-1]

+jinwei;

if(digits[len-1]

>=10)

reverse

(digits.

begin()

, digits.

end())

;return digits;}}

;

如果碰到兩個很大的整數相加求和(普通的整型會溢位的情況),這個思路可以拿過來直接用,在這裡,會有點麻煩。可以考慮思路二

思路二:遍歷一次,

這個題只是末尾加一。

從後往前遍歷:

由於只是末尾的數字加一,無非兩種情況,末尾的數字不等於9和等於9

看出迴圈了嗎?

即從後往前,遍歷陣列,如果數字不等於9, 那麼加一返回,否則,把該位數字置為0,跳出迴圈之後, 如果還沒返回,說明這些數都是0了,需要在第一位插入1.

class

solution

else

} digits.

insert

(digits.

begin()

,1);

return digits;}}

;

對於這個題,這個是比較好的一種方式。

LeetCode初級演算法之陣列 存在重複

題目描述 給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列 現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。示例 1 輸入 1,2,3,1 輸出 true 示例 2 輸入 1,2,3,4 輸出 false 示例 3 輸入 1,1,1,3,3,4,3,2,4,2...

LeetCode初級演算法之陣列 283 移動零

給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。題目資訊 輸入 陣列 輸出 陣列 將原陣列的0都移動到後面 額外 空間o 1 時間儘量...

leetcode 初級演算法 陣列

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度2,並且原陣列 nums 的前兩個元素被修改為1,2...