Python 刷Leetcode题库,顺带学英语单词(24)

简介: Python 刷Leetcode题库,顺带学英语单词(24)

Subsets


Given a set of distinct integers, nums, return all possible subsets (the power set).   [#78]

Note: The solution set must not contain duplicate subsets.


Example:
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]



这与之前经常用的子序列不同,本题要求的子序列的元素可以是原序列中的非连续相邻元素:

>>> def subsets(lst):
  ret = [[]]
  for n in lst:
    for r in ret[:]:
      t=r[:]
      t.append(n)
      ret.append(t)
  return ret
>>> subsets([1,2,3])
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
>>> subsets([1,2,2,3])
[[], [1], [2], [1, 2], [2], [1, 2], [2, 2], [1, 2, 2],
 [3], [1, 3], [2, 3], [1, 2, 3], [2, 3], [1, 2, 3],
 [2, 2, 3], [1, 2, 2, 3]]
>>> 



若要求的是连续元素的子序列:

>>> subsets = lambda s:[s[i:j] for i in range(len(s)) for j in range(i+1,len(s)+1)]+[[]]
>>> subsets([1,2,3])
[[1], [1, 2], [1, 2, 3], [2], [2, 3], [3], []]
>>> 
>>> # 去重操作:
>>> lst = [1,2,2,3]
>>> subsets(lst)
[[1], [1, 2], [1, 2, 2], [1, 2, 2, 3], [2], [2, 2], [2, 2, 3], [2], [2, 3], [3], []]
>>> result = []
>>> [result.append(i) for i in subsets(lst) if i not in result]
[None, None, None, None, None, None, None, None, None, None]
>>> result
[[1], [1, 2], [1, 2, 2], [1, 2, 2, 3], [2], [2, 2], [2, 2, 3], [2, 3], [3], []]
>>> 


自定义函数:

>>> def subsets(lst):
  res, t = [], [[]]
  lenth = len(lst)
  for i in range(lenth):
    for j in range(i+1,lenth+1):
      t.append(lst[i:j])
  for i in t:
    if i not in res:
      res.append(i)
  return res
>>> subsets([1,2,3])
[[], [1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]
>>> subsets([1,2,2,3])
[[], [1], [1, 2], [1, 2, 2], [1, 2, 2, 3], [2], [2, 2], [2, 2, 3], [2, 3], [3]]
>>> 



Subsets II


Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).   [#90]


Note: The solution set must not contain duplicate subsets.


Example:
Input: [1,2,2]
Output:
[
[2],
[1],
[1,2,2],
[2,2],
[1,2],
[]
]
目录
相关文章
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
65 6
|
5月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
130 2
|
3月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
56 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
3月前
Leetcode(最后一个单词长度)
这篇文章介绍了两种解决LeetCode第58题的方法,即计算给定字符串中最后一个单词的长度,方法包括翻转字符串和逆向遍历统计。
23 0
|
3月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
27 0
|
3月前
|
小程序 IDE 开发工具
Python编写单词复习小程序
Python编写单词复习小程序
24 0
|
5月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
5月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
78 7
|
5月前
|
算法 Python
【Leetcode刷题Python】 LeetCode 2038. 如果相邻两个颜色均相同则删除当前颜色
本文介绍了LeetCode 2038题的解法,题目要求在一个由'A'和'B'组成的字符串中,按照特定规则轮流删除颜色片段,判断Alice是否能够获胜,并提供了Python的实现代码。
60 3
|
5月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
28 3