題目描述
題目描述:
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
你可以假設除了整數 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...