题目 带重复元素的子集 给定一个可能具有重复数字的列表,返回其所有可能的子集 样例 如果 S = [1,2,2],一个可能的答案为: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 注意 子集中的每个元素都是非降序的 两个子集间的顺序是无关紧要的 解集中不能包含重复子集 挑战 你可以同时用递归与非递归的方式解决么? 解题 一个很简单的想法就是在上一题目中增加判断是否已经存在某个子集 class Solution: """ @param S: A…
带重复元素的子集 给定一个可能具有重复数字的列表,返回其所有可能的子集 注意事项 子集中的每个元素都是非降序的 两个子集间的顺序是无关紧要的 解集中不能包含重复子集 样例 如果 S = [1,2,2],一个可能的答案为: [ [2], [1], [1,2,2], [2,2], [1,2], [] ] 挑战 你可以同时用递归与非递归的方式解决么? 标签 递归 code class Solution { public: /** * @param S: A set of numbers. * @ret…
题目 带重复元素的排列 给出一个具有重复数字的列表,找出列表所有不同的排列. 样例 给出列表 [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…
题目 搜索旋转排序数组 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…
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k. Example 1: Input: nums = [1,2,3,1], k = 3 Output:…
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3772 访问. 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 输入: [1,2,3,1] 输出: true 输入: [1,2,3,4] 输出: false 输入: [1,1,1,3,3,4,3,2,4,2] 输出: true Given an array of int…
Given a collection of integers that might contain duplicates, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example,If S =[1,2,2], a solution is: […
题目 主元素II 给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一. 样例 给出数组[1,2,1,2,1,3,3] 返回 1 注意 数组中只有唯一的主元素 挑战 要求时间复杂度为O(n),空间复杂度为O(1). 解题 利用HashMap,key值是元素值,value是出现次数,但是时间复杂度和空间复杂度都是O(N) public class Solution { /** * @param nums: A list of integers * @return: Th…
题目 子集 给定一个含不同整数的集合,返回其所有的子集 样例 如果 S = [1,2,3],有如下的解: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 注意 子集中的元素排列必须是非降序的,解集必须不包含重复的子集 挑战 你可以同时用递归与非递归的方式解决么? 解题 根据上面求排列的思想很类似,还是深度优先遍历.由于输出每个子集需要升序,所以要先对数组进行排序.求出所以的子集,也就是求出所以的组合方式 + 空集 问题转化为求组合方式的问题…
题目 落单的数 II 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字. 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4 挑战 一次遍历,常数级的额外空间复杂度 解题 可以利用HashMap直接解决,时间复杂度和空间复杂度都是O(N) 1.map中存在该元素则:map.put(num,map.get(num) + 1) 2.map中不存在该元素则:map.put(num , 1) 3.map中这个元素出现次数等于三次,则删除该元素 空间复杂…