給定兩個字串形式的非負整數 num1 和num2 ,計算它們的和。
注意:num1 和num2 的長度都小於 5100.
num1 和num2 都只包含數字 0-9.
num1 和num2 都不包含任何前導零。
你不能使用任何內建 biginteger 庫, 也不能直接將輸入的字串轉換為整數形式。
分析雙指標分別指向兩個字串的末尾,同步向前移動,分別取當前指標所代表的的數字,然後相加,保留進製,下次相加時在加上進製,要注意的是兩個字串長度不同,指標的位置已經到頭了,就讓該位置的值為0,這是乙個重要的技巧。
時間o(n),空間o(1)
核心技巧:
int n1 = i >= 0 ? num1.charat(i)-'0' : 0;
int tmp = n1+n2+carry;
carry = tmp / 10; 進製
class
solution
if(carry >0)
return sb.
reverse()
.tostring()
;}}
對於非負整數 x 而言,x 的陣列形式是每位數字按從左到右的順序形成的陣列。例如,如果 x = 1231,那麼其陣列形式為 [1,2,3,1]。
給定非負整數 x 的陣列形式 a,返回整數 x+k 的陣列形式。
示例 1:
輸入:a = [1,2,0,0], k = 34
輸出:[1,2,3,4]
解釋:1200 + 34 = 1234
解釋 2:
輸入:a = [2,7,4], k = 181
輸出:[4,5,5]
解釋:274 + 181 = 455
示例 3:
輸入:a = [2,1,5], k = 806
輸出:[1,0,2,1]
解釋:215 + 806 = 1021
示例 4:
輸入:a = [9,9,9,9,9,9,9,9,9,9], k = 1
輸出:[1,0,0,0,0,0,0,0,0,0,0]
解釋:9999999999 + 1 = 10000000000
class
solution
//當carry過大時,需要依次去下carry的每一位
while
(carry >0)
return res;
}}
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。
最高位數字存放在陣列的首位, 陣列中每個元素只儲存單個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。
示例 1:
輸入: [1,2,3]
輸出: [1,2,4]
解釋: 輸入陣列表示數字 123。
示例 2:
輸入: [4,3,2,1]
輸出: [4,3,2,2]
解釋: 輸入陣列表示數字 4321。
class
solution
//carry此時有可能不為0,說明最高位還有數字
while
(carry >0)
//翻轉arraylist,放到陣列中
collections.
reverse
(res)
;int
new_res =
newint
[res.
size()
];for(
int i =
0; isize()
; i++
)return new_res;
}}
給定兩個二進位制字串,返回他們的和(用二進位制表示)。
輸入為非空字串且只包含數字 1 和 0。
示例 1:
輸入: a = 「11」, b = 「1」
輸出: 「100」
示例 2:
輸入: a = 「1010」, b = 「1011」
輸出: 「10101」
class
solution
while
(carry >0)
return sb.
reverse()
.tostring()
;}}
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。
如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。
您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。
示例:輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
else
carry = tmp /10;
if(l1 != null)
if(l2 != null)}if
(carry >0)
return p;
}}
字串相加
題目 給定兩個字串形式的非負整數num1和num2,計算它們的和。注意 num1和num2的長度都小於 5100.num1和num2都只包含數字0 9.num1和num2都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式 分析 注意幾個方面 1 迴...
字串相加
給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注意 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。你不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。class s...
字串相加
給定兩個字串形式的非負整數 num1 和num2 計算它們的和。注 num1 和num2 的長度都小於 5100.num1 和num2 都只包含數字 0 9.num1 和num2 都不包含任何前導零。不能使用任何內建 biginteger 庫,也不能直接將輸入的字串轉換為整數形式。分析 字串形式的整...