Python力扣热门100题——两数之和&&字母易位词分解 题解
·
挑战:
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
示例 2:
输入:nums = [3,2,4], target = 6 输出:[1,2]
示例 3:
输入:nums = [3,3], target = 6 输出:[0,1]
提示:
2 <= nums.length <= 104-109 <= nums[i] <= 109-109 <= target <= 109- 只会存在一个有效答案
写出来了吗?加油!py修仙之路固然凶险!
Answer:
时间复杂度较高版本
#————————————两数之和———————————— 输入数字 存入列表 输入target 遍历列表 条件判断 输出
#时间复杂度较高版本:
# class Solution(object):
# def twosum(self, nums, target):
# """
# :type nums: List[int]
# :type target: int
# :rtype: List[int]
# """
# flag = False
# for i in range(len(nums)):
# for j in range(i + 1, len(nums)):
# if nums[i] + nums[j] == target:
# return [i, j]
# return []
# #时间复杂度较低版本:
class Solution(object):
def twosum(self,nums,target):
# 遍历nums target-nums[i] 如果在nums里面存在 添加进output列表 输出他的下标 .index
for i in range(len(nums)):
res=target-nums[i]
if res in nums[i+1:]:
j=nums[i+1:].index(res) + i + 1
return [i, j]
print("未找到匹配")
return []
#验证
a=Solution()
result = a.twosum(nums=[3,3,1,5,6,7],target=11)
print(result)
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
解释:
- 在 strs 中没有字符串可以通过重新排列来形成
"bat"。 - 字符串
"nat"和"tan"是字母异位词,因为它们可以重新排列以形成彼此。 - 字符串
"ate","eat"和"tea"是字母异位词,因为它们可以重新排列以形成彼此。
示例 2:
输入: strs = [""]
输出: [[""]]
示例 3:
输入: strs = ["a"]
输出: [["a"]]
提示:
1 <= strs.length <= 1040 <= strs[i].length <= 100strs[i]仅包含小写字
Answer:
# ————————————————————字母异位词————————————————————————————————
class Solution(object):
"""
:type strs:list[str]
:type st: str
"""
def groupAnagrams(self,strs):
#定义一个空字典,用来储存排序后的结果
group={}
# 如果列表长度为1,或者字符串为空,返回原列表
if len(strs) == 1 or strs=='':
return [strs]
#取出字符串
for s in strs:
#对每一组字符串进行排序,并用‘’连接在一起,方便后面对比
sored_s=''.join(sorted(s))
#如果排序后的字符串不在group中,添加一个新的键
if sored_s not in group:
group[sored_s]=[]
#将排序前的字符串作为排序后的字符串的“值” 比如{'aet':['ate','eat']}
group[sored_s].append(s)
result=list(group.values())
return result
a=Solution()
#四种结果验证
# result=a.groupAnagrams([""])
# result=a.groupAnagrams(["eat"])
# result=a.groupAnagrams(["eat", "nat", "bat"])
result=a.groupAnagrams(["eat", "tea", "tan", "ate", "nat", "bat"])
print(result)
如果你已经完成今天的两个小练习恭喜你,已经达到练气四阶!🎊👺
更多推荐


所有评论(0)