【350. 两个数组的交集 II】
解:
- 暴力破解
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
elements1 = set(nums1)
elements2 = set(nums2)
same = []
if len(elements1) >= len(elements2):
for i in elements2:
if i in elements1:
same.append(i)
else:
for i in elements1:
if i in elements2:
same.append(i)
counts = []
for i in same:
counts.append(min(nums1.count(i),nums2.count(i)))
results = []
for i in range(len(same)):
for j in range(counts[i]):
results.append(same[i])
return results
- remove()
class Solution:
def intersect(self, nums1: List[int], nums2: List[int]) -> List[int]:
res = []
for i in nums1:
if i in nums2:
res.append(i)
nums2.remove(i)
return res
- 字典
class Solution:
def count_map(self, nums):
s = set(nums)
countMap = {}
for num in s:
countMap[num] = nums.count(num)
return countMap
def intersect(self, nums1, nums2) -> List[int]:
# key: data; value: counts
countMap1 = self.count_map(nums1)
countMap2 = self.count_map(nums2)
result = []
for ind1, key1 in enumerate(countMap1):
if countMap2.get(key1) != None:
counts = min(countMap1[key1], countMap2[key1])
for i in range(counts):
result.append(key1)
return result
【121. 买卖股票的最佳时机】
解:
- 动态规划
class Solution:
def maxProfit(self, prices: List[int]) -> int:
day_length = len(prices)
if day_length == 0:
return 0
dp = [0 for i in range(day_length)]
minprice = prices[0]
for i in range(day_length):
minprice = min(minprice, prices[i])
dp[i] = max(dp[i-1], prices[i] - minprice)
return max(dp)