200道⼤数据⾯试常考Leetcode算法题--数组篇02(python带
代码解析)
往期内容在这⾥:
⼤家好,继续为⼤家推荐200道⼤数据⾯试常考Leetcode算法题,这期为--数组篇,附带解析,都是从Leetcode官⽹总结⼤神们的解法(在这⾥感谢⼤神的帮助,我只是个搬运⼯!)每篇更新5篇,⼀共更新数组篇20篇,艾瑞巴迪和我⼀起刷起来!!
200道⼤数据⾯试常考Leetcode算法题(数组篇)35- 搜索插⼊位置
Leetcode原题:
题解为 :
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
if not nums:
return nums
# 定义左节点
# 定义左节点
left = 0
# 定义右节点
right = len(nums) - 1
# 从左开始向右循环
while(left <= right):
# 到重中点
mid = (left + right) // 2
# 假如中点为⽬标数
if(nums[mid] == target):
return mid
# ⽬标数是否在右边
if(nums[mid] < target):
# 则左节点从中点右边开始
left = mid+1
# ⽬标数在左边
else:
# 则右节点从中点左边开始
right = mid -1
# 跳出循环时,left 指向 target 插⼊位置,返回 left return left
200道⼤数据⾯试常考Leetcode算法题(数组篇)39-组合总和ⅠLeetcode原题:
题解为:
def combinationSum(self, nums: List[int], target: int) -> List[List[int]]:
ans=[]
for i in range(len(nums)):
# 若target-nums[i]<0,则以nums[i]为⾸元素⽆符合的组合
if target-nums[i]<0:
continue
elif target-nums[i]==0:
# 若target-nums[i]=0,则[nums[i]]即为唯⼀符合的组合
ans.append([nums[i]])
# 若target-nums[i]>0,则递归调⽤函数(以target-nums[i]为⽬标,nums[i:]为可⽤数组)
else:
ans+=[[nums[i]]+rest for rest in selfbinationSum(nums[i:],target-nums[i])]
return ans
200道⼤数据⾯试常考Leetcode算法题(数组篇)40-组合总和ⅡLeetcode原题:
题解为:
class Solution:
def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:
# 特判,若candidatescandidates为空,则返回[]
if(not candidates):
return []
# 数组长度循环次数
n=len(candidates)
# 排序
candidates.sort()
res=[]
# 回溯函数helper()helper(),
# 传⼊参数:下⼀加和索引ii,当前已加和数组tmptmp,下⼀⽬标targettarget
def helper(i,tmp,target):
# 若target==0target==0,说明当前和满⾜条件,
# 将当前加和数组tmptmp加⼊resres,并return。
print(i,tmp,target)
if(target==0):
res.append(tmp)
res.append(tmp)
return
python 定义数组# 若target==0target==0,
# 说明当前和满⾜条件,将当前加和数组tmptmp加⼊resres,并return。
if(i==n or target<candidates[i]):
return
# 对于j遍历区间[i,n)(为了防⽌数组越界,⾸先保证j>i,判断是否和上⼀元素相等),分为以下两种情况:
for j in range(i,n):
# 若满⾜条件j>i and candidates[j] == candidates[j-1]j>iandcandidates[j]==candidates[j−1],则跳过,避免出现重复解,同时也进⾏了剪枝。 if(j>i and candidates[j]==candidates[j-1]):
continue
# 否则,执⾏helper(j+1,tmp+[candidates[j]],target-candidates[j])
helper(j+1,tmp+[candidates[j]],target-candidates[j])
# 执⾏helper(0,[],target)helper(0,[],target),并返回resres
helper(0,[],target)
return res
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论