新手刷題 70道力扣題

2022-09-20 15:30:11 字數 1414 閱讀 3384

1. 兩數之和

1、暴力解法:時間複雜度為n(n*n)

class

solution:

def twosum(self, nums: list[int], target: int) ->list[int]:

for i in

range(0, len(nums)):

for j in range(i + 1, len(nums)):

if nums[i] + nums[j] ==target:

return [i,j]

2、雜湊字典

class

solution:

def twosum(self, nums: list[int], target: int) ->list[int]:

hashtable = {} #

hashmap = dict(),建立乙個空字典

for i, num in enumerate(nums): #

enumerate() 函式用於將乙個可遍歷的資料物件(如列表、元組或字串)組合為乙個索引序列,同時列出資料和資料下標,一般用在 for迴圈當中。

if target - num in hashtable: #

迴圈遍歷num時,如果hashtable中已經有另乙個元素(target-num)在雜湊表中,則直接返回這兩個元素的索引

return [hashtable[target -num], i]

hashtable[num] = i #

否則將該元素和索引新增到字典中

return

268. 丟失的數字

1、排序

class

solution:

def missingnumber(self, nums: list[int]) ->int:

#將陣列排序之後,即可根據陣列中每個下標處的元素是否和下標相等,得到丟失的數字。

nums.sort()

for i, num in

enumerate(nums):

if num !=i:

return

i

return len(nums)

2、雜湊集合

class

solution:

def missingnumber(self, nums: list[int]) ->int:

#雜湊集合:首先遍歷陣列nums,將陣列中的每個元素加入雜湊集合,然後依次檢查從0到n的每個整數是否在雜湊集合中,不在雜湊集合中的數字即為丟失的數字。

s =set(nums)

for i in range(len(nums) + 1):

if i not

ins:

return i

刷題49 力扣3道題)

輸入整數陣列arr,找出其中最小的k個數。例如,輸入4 5 1 6 2 7 3 8這8個數字,則最小的4個數字是1 2 3 4。輸入 arr 3,2,1 k 2 輸出 1,2 或者 2,1 輸入 arr 0,1,2,1 k 1 輸出 0 1.寫sort數值排序 2.快速排序 法一 sort排序 寫s...

刷題40 力扣1道題 牛客1道題)

給你乙個整數陣列 a,只有可以將其劃分為三個和相等的非空部分時才返回 true,否則返回 false。形式上,如果可以找出索引 i 1 j 且滿足 a 0 a 1 a i a i 1 a i 2 a j 1 a j a j 1 a a.length 1 就可以將陣列三等分。輸出 0,2,1,6,6,...

刷題35 力扣2道題 牛客1道題

輸入乙個正整數 target 輸出所有和為 target 的連續正整數序列 至少含有兩個數 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。輸入 target 9 輸出 2,3,4 4,5 輸入 target 15 輸出 1,2,3,4,5 4,5,6 7,8 限制 1 target 1...