LC Hashtable

LC Hashtable

简单

  1. 有效的字母异位词
def isAnagram(self, s,t):
	s_map,t_map = {},{}
	for c in s:
		if c in s_map:
			s_map[c] += 1
		else:
			s_map[c] = 1
	for c in t:
		if c in t_map:
			t_map[c] += 1
		else:
			t_map[c] = 1
	return s_map == t_map

中等

  1. 三数之和:
def threeSum(self, nums):
	#Method1 dfs
	nums.sort()
    res = []
    def dfs(first,cur,cumsum):
        if len(cur)==3 and cumsum == 0:
            res.append(cur)
        for i in range(first,len(nums)):
            if i>first and nums[i]==nums[i-1]: continue
            if cumsum+nums[i]>0: return 
            dfs(i+1,cur+[nums[i]],cumsum+nums[i])
    dfs(0,[],0)
    return res
    #Method2 hashtable
    nums.sort()
    res,d = set(),{}
    if len(nums)<3:
        return []
    for i,v in enumerate(nums):
        if v not in d:
            d[v] = [i]
        else:
            d[v].append(i)
    for i in range(0,len(nums)):
        for j in range(i+1,len(nums)):
            if -nums[i]-nums[j] in d:
                ll = d[-nums[i]-nums[j]]
                for x in ll:
                    if x!= i and x!=j:
                    	res.add(tuple(sorted([nums[i],nums[j],-nums[i]-nums[j]])))
        res = [list(x) for x in res]
    return res
    			

困难

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值