LeetCode題解 實現大整數相加(按位計算)

2021-10-08 21:40:38 字數 1539 閱讀 2764

題目:給出兩個很大的整數,要求實現程式求出兩個整數之和

思路:兩個特別大的整數,無法進行直接相加算出結果,則可以拆解成乙個乙個子步驟。——按位運算(小學僧列豎式)

用陣列儲存即可,陣列的每乙個元素,對應著大整數的每乙個數字。

大整數的相加步驟:

建立兩個整型陣列,長度為較大整數的位數+1。 把每乙個整數倒序儲存到陣列中,整數的個位存於陣列下標為0的位置,最高位存於陣列的尾部。(目的是為了符合從左到右訪問陣列的習慣)

建立結果陣列,結果陣列的長度同樣是較大整數的位數 + 1,(為了給高位進製預留)

遍歷兩個陣列,從左到右按位進行相加

把結果陣列的全部元素進行逆序,去掉首部的0,得到最終結果

**實現

package some_problem;

/** * author candy_chen

* date 2020/7/29 20:53

* version 1.0

* description: 實現大整數相加

*//**

* */

public

class

bignumbersum

int[

] arrayb =

newint

[maxlength +1]

;for

(int i =

0; i < bignumberb.

length()

; i++

)//2.構建result陣列,陣列長度等於較大整數字數+1

int[

] result =

newint

[maxlength +1]

;//3.遍歷陣列,按位相加

for(

int i =

0; i < result.length; i++

) result[i]

= temp;

}//4.把result陣列再次逆序並轉成string

stringbuilder sb =

newstringbuilder()

;//是否找到大整數的最高有效位

boolean findfirst =

false

;for

(int i = result.length -

1; i >=

0; i--

) findfirst =

true;}

sb.(result[i]);

}return sb.

tostring()

;}public

static

void

main

(string[

] args)

}

大整數乘法題解

09 大整數乘法 總時間限制 1000ms 記憶體限制 65536kb 描述 求兩個不超過200位的非負整數的積。輸入 有兩行,每行是乙個不超過200位的非負整數,沒有多餘的前導0。輸出 一行,即相乘後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。樣例輸入 1234...

大整數加法實現

先貼 move num 實現將輸入資料移到陣列末尾 con num 實現將字元轉為數字 add 實現加法,進製操作 注意不列印前導0 include includevoid move num char num while j 0 void conv num char num void add cha...

大整數的運算實現

在csdn看到有人提出關於大數加法的實現問題,想起在學資料結構時有個課程設計是 鍊錶實現大整數的運算 當時看到就畏懼,如今是躍躍欲試。便嘗試去實現下,由於課本還托在樓管那,不了解具體的要求,就先用非鍊錶形式實現之。stl中的string拿來用之,順便熟悉下。後發覺比字元陣列好用多了。對於記憶體管理應...