lintcode 中等题:subSets 子集】的更多相关文章

题目 带重复元素的子集 给定一个可能具有重复数字的列表,返回其所有可能的子集 样例 如果 S = [1,2,2],一个可能的答案为: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 注意 子集中的每个元素都是非降序的 两个子集间的顺序是无关紧要的 解集中不能包含重复子集 挑战 你可以同时用递归与非递归的方式解决么? 解题 一个很简单的想法就是在上一题目中增加判断是否已经存在某个子集 class Solution: """ @param S: A…
题目 子集 给定一个含不同整数的集合,返回其所有的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 注意 子集中的元素排列必须是非降序的,解集必须不包含重复的子集 挑战 你可以同时用递归与非递归的方式解决么? 解题 根据上面求排列的思想很类似,还是深度优先遍历.由于输出每个子集需要升序,所以要先对数组进行排序.求出所以的子集,也就是求出所以的组合方式 + 空集 问题转化为求组合方式的问题…
题目 数组划分 给出一个整数数组nums和一个整数k.划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置i,满足nums[i]大于等于k. 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组nums=[3,2,2,1]和 k=2,返回 1 注意 你应该真正的划分数组nums,而不仅仅只是计算比k小的整数数,如果数组nums中的所有元素都比k小,则返回nums.length. 挑战 要求在原地使用O…
题目 带重复元素的排列 给出一个具有重复数字的列表,找出列表所有不同的排列. 样例 给出列表 [1,2,2],不同的排列有: [ [1,2,2], [2,1,2], [2,2,1] ] 挑战 使用递归和非递归分别完成该题. 解题 和上面差不多,增加判断res中是否已经存在该排列的语句,这种方法不是很好,但是竟然也可以通过 class Solution { /** * @param nums: A list of integers. * @return: A list of unique perm…
题目 全排列 给定一个数字列表,返回其所有可能的排列. 您在真实的面试中是否遇到过这个题? Yes 样例 给出一个列表[1,2,3],其全排列为: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 挑战 使用递归和非递归分别解决. 解题 深度优先遍历,找到一个保存一个,自己没有写出来,参考九章中的程序 递归 class Solution { /** * @param nums: A list of integers. * @retu…
题目 Implement Trie Implement a trie with insert, search, and startsWith methods. 样例   注意 You may assume that all inputs are consist of lowercase letters a-z. 解题 Trie,字典树,又称单词查找树.前缀树,是一种哈希树的变种.应用于字符串的统计与排序,经常被搜索引擎系统用于文本词频统计. 性质: 1.根节点不包含字符,除根节点外的每一个节点都…
题目 主元素 III 给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k. 样例 ,返回 3 注意 数组中只有唯一的主元素 挑战 要求时间复杂度为O(n),空间复杂度为O(k) 解题 上一题刚介绍过所用的方法,但是这个确实很复杂的 先利用HashMap实现 public class Solution { /** * @param nums: A list of integers * @param k: As described * @return: The major…
题目: N皇后问题 II 根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局. 样例 比如n=4,存在2种解决方案 解题: 和上一题差不多,这里只是求数量,这个题目定义全局变量,递归的时候才能保存结果,参考程序 java程序: class Solution { /** * Calculate the total number of distinct N-Queen solutions. * @param n: The number of queens. * @return:…
题目: 中等 A + B 问题 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符. 如果 a=1 并且 b=2,返回3 注意 你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行. 挑战 显然你可以直接 return a + b,但是你是否可以挑战一下不这样做? 说明 a和b都是 32位 整数么? 是的 我可以使用位运算符么? 当然可以 解题 上面提示了用位运算,通过不能够用加法,应该也会用到逻辑运算,感觉应该提取a.b的每位数据进行计算,也就…
题目 搜索旋转排序数组 II 跟进“搜索旋转排序数组”,假如有重复元素又将如何? 是否会影响运行时间复杂度? 如何影响? 为何会影响? 写出一个函数判断给定的目标值是否出现在数组中. 样例 给出[3,4,4,5,7,0,1,2]和target=4,返回 true 解题 直接法 class Solution: """ @param A : an integer ratated sorted array and duplicates are allowed @param targ…