1. 兩數之和
1、暴力解法:時間複雜度為n(n*n)
classsolution:
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、雜湊字典
classsolution:
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、排序
classsolution:
def missingnumber(self, nums: list[int]) ->int:
#將陣列排序之後,即可根據陣列中每個下標處的元素是否和下標相等,得到丟失的數字。
nums.sort()
for i, num in
enumerate(nums):
if num !=i:
return
i
return len(nums)
2、雜湊集合
classsolution:
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...