一、599. 两个列表的最小索引总和
简单
假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。
你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。
示例 1:
输入: list1 = [“Shogun”, “Tapioca Express”, “Burger King”, “KFC”],list2 = [“Piatti”, “The Grill at Torrey Pines”, “Hungry Hunter Steakhouse”, “Shogun”]
输出: [“Shogun”]
解释: 他们唯一共同喜爱的餐厅是“Shogun”。
示例 2:
输入:list1 = [“Shogun”, “Tapioca Express”, “Burger King”, “KFC”],list2 = [“KFC”, “Shogun”, “Burger King”]
输出: [“Shogun”]
解释: 他们共同喜爱且具有最小索引和的餐厅是“Shogun”,它有最小的索引和1(0+1)。
class Solution:
def twos(self,list1,list2):
d=defaultdict(list)
for i in (set(list1) & set(list2)):
d[list1.index(i)+list2.index(i)].append(i)
return min(d.items())
ss=Solution()
list1= ["Shogun", "Tapioca Express", "Burger King", "KFC"]
list2 = ["KFC", "Shogun", "Burger King"]
print(ss.twos(list1, list2))
二、1122. 数组的相对排序
简单
给你两个数组,arr1 和 arr2,arr2 中的元素各不相同,arr2 中的每个元素都出现在 arr1 中。
对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。
示例 1:
输入: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]
示例 2:
输入:arr1 = [28,6,22,8,44,17], arr2 = [22,28,8,6]
输出:[22,28,8,6,17,44]
class S1122:
def func(self, arr1, arr2):
res = []
for i in arr2:
count = arr1.count(i)
while count != 0:
res.append(i)
count -= 1
arr1.remove(i)
res = res + sorted(arr1)
return res
res = S1122()
arr1 = [2, 3, 1, 3, 2, 4, 6, 7, 9, 2, 19]
arr2 = [2, 1, 4, 3, 9, 6]
print(res.func(arr1, arr2))
三、1002. 查找共用字符
简单
给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按 任意顺序 返回答案。
示例 1:
输入:words = [“bella”,“label”,“roller”]
输出:[“e”,“l”,“l”]
示例 2:
输入:words = [“cool”,“lock”,“cook”]
输出:[“c”,“o”]
class Solution:
def func1002(self,words):
res=[]
key=set(words[0])
for k in key:
minimum=min(a.count(k) for a in words)
res+=[k]*minimum
return res
r=Solution()
words = ["bella","label","roller"]
print(r.func1002(words))
四、771. 宝石与石头
简单
给你一个字符串 jewels 代表石头中宝石的类型,另有一个字符串 stones 代表你拥有的石头。 stones 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
字母区分大小写,因此 “a” 和 “A” 是不同类型的石头。
示例 1:
输入:jewels = “aA”, stones = “aAAbbbb”
输出:3
示例 2:
输入:jewels = “z”, stones = “ZZ”
输出:0
class Solution:
def func771(self,j,s):
return sum([s.count(i) for i in j])
r=Solution()
j = "z"
s = "ZZ"
print(r.func771(j, s))
五、961. 在长度 2N 的数组中找出重复 N 次的元素
简单
给你一个整数数组 nums ,该数组具有以下属性:
nums.length == 2 * n.
nums 包含 n + 1 个 不同的 元素
nums 中恰有一个元素重复 n 次
找出并返回重复了 n 次的那个元素。
示例 1:
输入:nums = [1,2,3,3]
输出:3
示例 2:
输入:nums = [2,1,2,5,3,2]
输出:2
示例 3:
输入:nums = [5,1,5,2,5,3,5,4]
输出:5
依照题意,其实发现一个元素出现两次就能确定答案了。具体做法是用哈希表存储遍历过的元素,发现遍历过的元素即返回。
class Solution:
def repeatedNTimes(self, nums: List[int]) -> int:
s = set()
for i in nums:
if i in s:
return i
else:
s.add(i)
return -1
s=Solution()
nums = [5,1,5,1,5,3,5,4]
print(s.repeatedNTimes(nums))