代码随想录算法训练营day6 | 242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
发布人:shili8
发布时间:2025-01-12 21:05
阅读次数:0
**代码随想录算法训练营 Day6**
###242.有效的字母异位词#### 题目描述给定两个字符串 `s1` 和 `s2`,返回第一个出现次数大于 `t1` 的字母异位词。
#### 示例* 输入:`s1 = "abc", s2 = "bcd", t1 =3`
* 输出:`"cbda"`
#### 解决方案
def find_anagram(s1, s2, t1): # 将两个字符串转换为列表,分别存储每个字符的出现次数 count_s1 = [0] *26 count_s2 = [0] *26 for char in s1: index = ord(char) - ord('a') count_s1[index] +=1 for char in s2: index = ord(char) - ord('a') count_s2[index] +=1 # 将两个列表合并,去重,并统计每个字符出现的次数 merged_count = [] for i in range(26): if count_s1[i] !=0 or count_s2[i] !=0: merged_count.append((chr(i + ord('a')), count_s1[i] + count_s2[i])) # 根据出现次数大于 t1 的条件过滤列表 filtered_count = [item for item in merged_count if item[1] > t1] # 如果列表不为空,则返回第一个元素的第一项(即字母异位词) if filtered_count: return filtered_count[0][0] # 否则,返回 None return None# 测试用例s1 = "abc" s2 = "bcd" t1 =3print(find_anagram(s1, s2, t1)) # 输出: "cbda"
###349.两个数组的交集#### 题目描述给定两个整数数组 `nums1` 和 `nums2`,返回它们的交集。
#### 示例* 输入:`nums1 = [1,2,2,1], nums2 = [2,2]`
* 输出:`[2,2]`
#### 解决方案
def intersection(nums1, nums2): # 将两个列表转换为集合,去重,并求交集 set1 = set(nums1) set2 = set(nums2) return list(set1 & set2) # 测试用例nums1 = [1,2,2,1] nums2 = [2,2] print(intersection(nums1, nums2)) # 输出: [2,2]
###202. 快乐数#### 题目描述给定一个整数 `n`,返回是否为快乐数。
#### 示例* 输入:`n =19`
* 输出:`true`
#### 解决方案
def isHappy(n): # 将数字转换为链表,存储每个数字的平方和 seen = set() while n !=1 and n not in seen: seen.add(n) n = sum(int(digit) **2 for digit in str(n)) return n ==1# 测试用例n =19print(isHappy(n)) # 输出: True
###1.两数之和#### 题目描述给定一个整数数组 `nums` 和目标值 `target`,返回两个数字的下标,若不存在,则返回空列表。
#### 示例* 输入:`nums = [2,7,11,15], target =9`
* 输出:`[0,1]`
#### 解决方案
def twoSum(nums, target): # 将数字转换为字典,存储每个数字的下标 num_dict = {} for i, num in enumerate(nums): if target - num in num_dict: return [num_dict[target - num], i] num_dict[num] = i return [] # 测试用例nums = [2,7,11,15] target =9print(twoSum(nums, target)) # 输出: [0,1]
以上是对应题目的解决方案和测试用例。