力扣Hot100题解之哈希表Python实现详解

一、1. 两数之和

  • 代码:
  • class Solution:
    	def twoSum(self, nums, target):
    		sub_data = {}
    		for idx, x in enumerate(nums):
    			if target-x in sub_data:
    				return [idx, sub_data[target-x]]
    			sub_data[x] = idx
    

    二、49. 字母异位词分组

  • 思路:这道题用python只需要注意两个点,一个sorted()和sort() 的用法,sorted:无返回值,sort需要返回值。以及"".join的返回值是列表
  • 代码:
  • class Solution:
        def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
            dict_s = collections.defaultdict(list)
            for s in strs:
                list_s = "".join(sorted(s))
                dict_s[list_s].append(s)
            res = []
            for i in dict_s:
                res.append(dict_s[i])
            return res
    

    三、128. 最长连续序列

  • 思路:找到每个连续序列(最短的连续序列长度为1)的第一位。然后判断以这个数字开头的连续序列的长度多长。
  • 代码:
  • class Solution:
    	def longestConsecutive(self, nums):
    		long_seq = 0
    		num_set = set(nums)  # 这里就是利用字典去重,减少点运算
    		for n in nums:
    			if n-1 not in num_set:
    				cur_num = n
    				cur_long_seq = 1
    				while cur_num + 1 in num_set:
    					cur_num += 1
    					cur_long_seq += 1
    				long_seq = max(long_seq, cur_long_seq)
    		return long_seq
    

    作者:Y1nhl

    物联沃分享整理
    物联沃-IOTWORD物联网 » 力扣Hot100题解之哈希表Python实现详解

    发表回复