leetcode刷題筆記 陣列2

2021-10-04 16:26:20 字數 2406 閱讀 2630

給定乙個大小為 n 的陣列,找到其中的多數元素。多數元素是指在陣列**現次數大於 ⌊ n/2 ⌋ 的元素。

你可以假設陣列是非空的,並且給定的陣列總是存在多數元素。

這道題主體思想是雜湊對映。python的字典就使用了hash的思想。直接貼**。

class

solution

:def

majorityelement

(self, nums: list[

int])-

>

int:

n =len(nums)

over =

cnt =[0

for i in

range

(n)]

for i in

range

(len

(nums)):

if nums[i]

in over:

continue

else:)

for i in

range

(len

(nums)):

x =0 cnt[over.index(nums[i])]

=cnt[over.index(nums[i])]

+1x=cnt.index(

max(cnt)

)return

(over[x]

)

我這種寫法比較醜,貼乙個官方用c++實現的:

class

solution

}return majority;}}

;

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

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

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

這道題需要注意的是,可能會出現[9,9,9]->[1,0,0,0]這樣的例子。

class

solution

:def

plusone

(self, digits: list[

int])-

> list[

int]

: n =

len(digits)

cnt =

0

ans =

for i in

range

(n):

cnt = cnt + digits[i]*10

**(n-i-1)

cnt = cnt+

1 c=

len(

str(cnt)

) tmp =[0

for i in

range

(c)]

for i in

range

(c):

tmp[i]

=int

(cnt/(10

**(c-i-1)

))cnt=cnt%(10

**(c-i-1)

)return tmp

還有一種巧妙的方法,利用python做出:

class

solution

:def

plusone

(self, digits: list[

int])-

> list[

int]

:##先變成乙個整的數字,然後做加法,然後轉換成str,再轉int加到新的list中

nums_str =

""for i in digits:

nums_str =nums_str+

str(i)

nums_int =

int(nums_str)+1

res =

for i in

str(nums_int)

:int

(i))

return res

本問題中學會了python的指數表示:

3**5表示3的5次冪,也就是3*3*3*3*3,等於243

3e5表示3乘以10的5次冪,也就是3*10*10*10*10*10,結果等於300000

學會了把float陣列轉化成int陣列的方式,即map方法:

list=[

1.3,

2.3,4,

5]#帶有float型的列表 

int_list =

map(

int,

list

)#使用map轉換

print int_list        [1

,2,4

,5]

leetcode刷題筆記 陣列3

給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列 現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。這裡的解答用到了投機取巧的一種方法,使用set函式 class solution def containsduplicate self,nums list int...

leetcode刷題筆記 陣列7

給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。class solution def removeduplicates self,nums list i...

C 刷題筆記 陣列

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。利用該二維陣列的性質 所以,對於左下角的值 m,它是該行最小的數,又是該列最大的數。可以從這裡開始比較,按行按...