LeetCode總結 高精度篇

2021-09-11 07:31:13 字數 2403 閱讀 2093

分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

我們常見的一些基本的資料結構比如整型int或者浮點型float由於位數過多無法用內建型別儲存,這時候我們就需要自己實現高精度的資料型別來進行儲存和運算。這種問題在實際產品中還是比較實用的,所以相對來說也是面試中的常客。leetcode中關於高精度的題目有以下幾道:

add binary

add two numbers

plus one

multiply strings

add binary

和 add two numbers

是同一型別的題目,都是高精度中的加法運算,只是乙個是二進位制的,乙個是十進位制的,其實進製是無所謂的,**基本可以統一起來用一種思路來實現。思路也很簡單,就是從低位開始相加,一直維護進製就可以了。屬於考察非常基本的陣列操作,沒有什麼演算法難度,主要看看coding實現能力。

plus one

也是一道常見的題目,他其實就是實現c++中++的運算子,因為只需要+1,所以其實比上面的題目更加簡單。這道題的小陷阱就是它是用陣列從高位到低位進行儲存的,所以如果出現進製,那麼需要重新分配空間,並給最高位賦1,其他位賦0即可。這裡恰好引入乙個點,就是高精度儲存應該低位到高位儲存還是反過來好,這也是面試中可能問到的問題。

multiply strings

這道題是高精度的乘法運算,屬於比較複雜的,需要對每一位的結果分別計算累加,其中的細節有點多,這裡就不細說了,個人認為實現有點複雜,並不是很適合在面試**現。

雖然說題目不多,但是這類題目的出現率卻是非常高的,主要原因倒不是這種題目本身有很多的考點,而是它們特別好擴充套件,基本上來說問到這種題目,首先是考察一下coding能力,一般來說都是這種加減乘除的運算,接下來一定會是關於資料結構(或者說物件導向)的設計。這些題目的本身都是為高精度biginteger服務的,面試官會問一些關於這個資料結構設計的問題,比如說如果讓你來設計這個類,用什麼資料結構來存(比如陣列還是鍊錶,各有什麼利弊),需要哪些介面(建構函式,加減乘除運算等等),還有比如要設計建構函式,需要什麼介面的建構函式(這裡賦值建構函式,賦值運算子這些肯定是需要的,但是要注意必須提供對於常規型別比如int,long這些的介面,乙個好的高精度類肯定是要對比它更弱的資料結構進行相容的)。

上面我列舉了一些可能在面試中會被繼續考查的問題,也是一部分聯想,像這種設計問題可以問得還是比較多的,也是非常常見的,大家可以自己多進行這種問題的準備和聯想哈。

分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

我們常見的一些基本的資料結構比如整型int或者浮點型float由於位數過多無法用內建型別儲存,這時候我們就需要自己實現高精度的資料型別來進行儲存和運算。這種問題在實際產品中還是比較實用的,所以相對來說也是面試中的常客。leetcode中關於高精度的題目有以下幾道:

add binary

add two numbers

plus one

multiply strings

add binary

和 add two numbers

是同一型別的題目,都是高精度中的加法運算,只是乙個是二進位制的,乙個是十進位制的,其實進製是無所謂的,**基本可以統一起來用一種思路來實現。思路也很簡單,就是從低位開始相加,一直維護進製就可以了。屬於考察非常基本的陣列操作,沒有什麼演算法難度,主要看看coding實現能力。

plus one

也是一道常見的題目,他其實就是實現c++中++的運算子,因為只需要+1,所以其實比上面的題目更加簡單。這道題的小陷阱就是它是用陣列從高位到低位進行儲存的,所以如果出現進製,那麼需要重新分配空間,並給最高位賦1,其他位賦0即可。這裡恰好引入乙個點,就是高精度儲存應該低位到高位儲存還是反過來好,這也是面試中可能問到的問題。

multiply strings

這道題是高精度的乘法運算,屬於比較複雜的,需要對每一位的結果分別計算累加,其中的細節有點多,這裡就不細說了,個人認為實現有點複雜,並不是很適合在面試**現。

雖然說題目不多,但是這類題目的出現率卻是非常高的,主要原因倒不是這種題目本身有很多的考點,而是它們特別好擴充套件,基本上來說問到這種題目,首先是考察一下coding能力,一般來說都是這種加減乘除的運算,接下來一定會是關於資料結構(或者說物件導向)的設計。這些題目的本身都是為高精度biginteger服務的,面試官會問一些關於這個資料結構設計的問題,比如說如果讓你來設計這個類,用什麼資料結構來存(比如陣列還是鍊錶,各有什麼利弊),需要哪些介面(建構函式,加減乘除運算等等),還有比如要設計建構函式,需要什麼介面的建構函式(這裡賦值建構函式,賦值運算子這些肯定是需要的,但是要注意必須提供對於常規型別比如int,long這些的介面,乙個好的高精度類肯定是要對比它更弱的資料結構進行相容的)。

上面我列舉了一些可能在面試中會被繼續考查的問題,也是一部分聯想,像這種設計問題可以問得還是比較多的,也是非常常見的,大家可以自己多進行這種問題的準備和聯想哈。

高精度總結

整數 字串 高精度常用 string int to str int a 整數轉為字串 string result while a result.insert 0,1,a 10 0 a 10 return result 字串 整數 int str to int string a int result ...

高精度運算總結

日期 2022年5月18日 資料型別 定義識別符號 資料範圍 整型int 231 231 1 2 109 長整型long long 263 263 1 無符號長整型 unsigned long long 0 264 1 上面給出的範圍的數稱為單精度數,對應的運算稱為單精度運算。超出上面給出的範圍的數...

高精度除法(高精度除以高精度)

先貼乙個簡單的高精度除以單精度的 include include include using namespace std int main else ys ys 10 a i 0 while c i 0 i for int j i j 0 j printf d c j if ys printf d ...