频道栏目
首页 > 考试 > 其他 > 正文

利用collections类中的defaultdict函数,生成一个my_list字典

2018-05-05 10:25:23         来源:m0_37404802的博客  
收藏   我要投稿

(1)49.Group Anagrams

题目:

\

分析:

利用collections类中的defaultdict函数,生成一个my_list字典,跟dict不同的是,当访问my_list键不存在时,会自动创建一个这样的键值,通过将每个字符重排并且用join重新连接为字符串,凡是具有相同的字母以及个数的字符串,其键值都一样,所以直接将该字符串append到对应的值列表中,最后返回时注意是列表类型,所以需要用list()函数转化。

代码:

from collections import defaultdict
class Solution:
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        
        my_list = defaultdict(list)

        for tmp in strs:
        	str1 = "".join(sorted(tmp))
        	my_list[str1].append(tmp)

        return list(my_list.values())

 

(2)77.Combinations

题目:

\

分析:

首先创建一个从1到n的列表,一个存储最终结果的空列表final_list,用递归的思想不断将符合条件的插入到最终列表中。调用my_combine()函数,每次判断当前tmp的长度是否等于k,如果等于则插入到final_list中,执行while循环,如果当前num中剩余数字还可以加入到tmp中则继续循环,并添加赋给tmp2,然后count自增,递归调用my_combine()函数,直到找到所有满足条件的子列表。

代码:

class Solution:
    def combine(self, n, k):
        """
        :type n: int
        :type k: int
        :rtype: List[List[int]]
        """
        num = list(range(1,n+1))
        final_list = []
        self.my_combine(num,0,k,[],final_list)

        return final_list

    def my_combine(self,num,count,k,tmp,final_list):
    	if len(tmp) == k:
    		final_list.append(tmp)
    		return True

    	while len(num)-count >= k - len(tmp):
    		tmp2 = tmp + [num[count]]
    		count+=1
    		self.my_combine(num,count,k,tmp2,final_list)

上一篇:The Cow Doctor【bitset+枚举】
下一篇:编程开发世纪末的星期问题解析
相关文章
图文推荐
热门新闻

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站