做网站安阳,节点网站,网络课程网站模板,网站制作模板教案一、2215. 找出两数组的不同
1.排序双指针。我以为遍历时复很高#xff0c;所以用的双指针。
class Solution:def findDifference(self, nums1: List[int], nums2: List[int]) - List[List[int]]:#排序双指针nums1.sort()nums2.sort()ans [[],[]]a,b,n1,n2 0,0,len(nu…一、2215. 找出两数组的不同
1.排序双指针。我以为遍历时复很高所以用的双指针。
class Solution:def findDifference(self, nums1: List[int], nums2: List[int]) - List[List[int]]:#排序双指针nums1.sort()nums2.sort()ans [[],[]]a,b,n1,n2 0,0,len(nums1),len(nums2)while an1 and bn2:x nums1[a]y nums2[b]if a 0 and nums1[a-1] x:a 1continueif b 0 and nums2[b-1] y:b 1continueif x y:ans[1].append(y)b 1elif x y:ans[0].append(x)a 1else:a 1b 1# 将剩余存入while a n1:x nums1[a]if a 0 or nums1[a-1] ! x:ans[0].append(x)a 1while b n2:y nums2[b]if b 0 or nums2[b-1] ! y:ans[1].append(y)b 1return ans
2.集合求差。来自题解. - 力扣LeetCode。
class Solution:def findDifference(self, nums1: List[int], nums2: List[int]) - List[List[int]]:# 集合差集return [list(set(nums1)-set(nums2)),list(set(nums2)-set(nums1))]
下段来自chatgpt
需要注意的是集合操作的时间复杂度通常是接近 O(1) 的因为集合内部使用哈希表实现能够快速进行元素的查找和插入但在极端情况下可能会达到 O(n)例如哈希冲突较多的情况。
3.集合差集海象运算符。来自题解. - 力扣LeetCode。
class Solution:def findDifference(self, nums1: List[int], nums2: List[int]) - List[List[int]]:# 集合差集海象运算符return [list((s1 : set(nums1)) - (s2 : set(nums2))),list(s2 - s1)]
下段来自chatgpt
海象运算符的主要作用是可以在表达式中将计算结果赋值给变量且在同一表达式中使用这个变量。这样可以避免重复计算相同的表达式使代码更加简洁和易读。
二、2706. 购买两块巧克力
1.排序
class Solution:def buyChoco(self, prices: List[int], money: int) - int:# 排序prices.sort()s prices[0] prices[1]return money - s if money s else money 2.遍历,求最小和次小。
class Solution:def buyChoco(self, prices: List[int], money: int) - int:# 遍历,求最小和次小a,b inf,inffor x in prices:if x a:a,b x,aelif x b:b xreturn money - a - b if money ab else money 三、1380. 矩阵中的幸运数
1.遍历时复O(n*m)。
class Solution:def luckyNumbers (self, matrix: List[List[int]]) - List[int]:# 遍历# 分别求出每一行的最小值和每一列的最大值# 出现相同元素即为幸运数因为元素各不相同minList,maxList [inf]*len(matrix),[0]*len(matrix[0])for i,row in enumerate(matrix):for j,x in enumerate(row):if x minList[i]:minList[i] xif x maxList[j]:maxList[j] xs1,s2 set(minList),set(maxList)return list(s1 - (s1 - s2))
参考官方题解方法二. - 力扣LeetCode对上述求最大小值列表部分代码进行修改。修改后如下
class Solution:def luckyNumbers (self, matrix: List[List[int]]) - List[int]:# 遍历时复O(n*m)# 分别求出每一行的最小值和每一列的最大值# 出现相同元素即为幸运数因为元素各不相同minList [min(row) for row in matrix]maxList [max(col) for col in zip(*matrix)] #对matrix转置s1,s2 set(minList),set(maxList)return list(s1 - (s1 - s2))
2.最小值中最大值和最大值中最小值方法来自评论. - 力扣LeetCode。时复O(n*m)。
class Solution:def luckyNumbers (self, matrix: List[List[int]]) - List[int]:# 最小值中最大值和最大值中最小值minList [min(row) for row in matrix]maxList [max(col) for col in zip(*matrix)] #对matrix转置a,b max(minList),min(maxList)return [a] if ab else []
完
感谢你看到这里一起加油吧