349、给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
def intersect(nums1, nums2):
# TODO 先将两个数组进行排序
nums1.sort()
nums2.sort()
print(nums1)
print(nums2)
# TODO 初始化三个指针i, j, k,将i指向nums1,j指向nums2,k指向nums1
i = 0
j = 0
result = list()
k = 0
# TODO 如果nums1[i] == nums2[j], 将其保存到nums1[k]中
# TODO 如果nums1[i] < nums2[j], i++,否则j++
while i < len(nums1) and j < len(nums2):
if nums1[i] == nums2[j] :
if nums1[i] not in result:
result.append(nums1[i])
k += 1
i += 1
j += 1
elif nums1[i] < nums2[j]:
i += 1
else:
j += 1
return result
350、给定两个数组,编写一个函数来计算它们的交集。
示例 1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]
def intersect(nums1, nums2):
# TODO 先将两个数组进行排序
nums1.sort()
nums2.sort()
print(nums1)
print(nums2)
# TODO 初始化三个指针i, j, k,将i指向nums1,j指向nums2,k指向nums1
i = 0
j = 0
k = 0
# TODO 如果nums1[i] == nums2[j], 将其保存到nums1[k]中
# TODO 如果nums1[i] < nums2[j], i++,否则j++
while i < len(nums1) and j < len(nums2):
if nums1[i] == nums2[j]:
nums1[k] = nums1[i]
i += 1
j += 1
k += 1
elif nums1[i] < nums2[j]:
i += 1
else:
j += 1
return nums1[:k]
976、给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回 0。
示例 :
输入:[3,6,2,3]
输出:8
# 将数组排序后,只要两条短边之和大于第三遍就可以围城三角形
def largestPerimeter(arr):
arr.sort()
print(arr)
index = len(arr) - 3
while index >= 0:
if arr[index] + arr[index + 1] > arr[index + 2]:
return arr[index] + arr[index + 1] + arr[index + 2]
index -= 1
return 0
1122、给你两个数组,arr1 和 arr2,
arr2 中的元素各不相同
arr2 中的每个元素都出现在 arr1 中
对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
示例:
输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]
提示:
arr1.length, arr2.length <= 1000
0 <= arr1[i], arr2[i] <= 1000
arr2 中的元素 arr2[i] 各不相同
arr2 中的每个元素 arr2[i] 都出现在 arr1 中
def relativeSortArray(num1, num2):
temp = [0] * 1001
res = list()
for i in arr1:
temp[i] += 1
# for i in range(len(temp)):
# while temp[i] > 0:
# res.append(i)
# temp[i] -= 1
# print(res)
for i in arr2:
while temp[i] > 0:
res.append(i)
temp[i] -= 1
for i in range(len(temp)):
while temp[i] > 0:
res.append(i)
temp[i] -= 1
return res
1370、上升下降字符串
def sortString(s):
bucket = [0] * 26
for i in s:
bucket[ord(i) - 97] += 1
res = list()
while True:
if not any(bucket[i] for i in range(26)):
break
for i in range(26):
if bucket[i] > 0:
res.append(chr(i + 97))
bucket[i] -= 1
for i in range(26):
if bucket[25 - i] > 0:
res.append(chr(25 - i + 97))
bucket[25 - i] -= 1
return "".join(res)