491. 递增子序列(新 & 难)

呜呜呜呜呜

题目

给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。

数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。

solution

  1. 这道题不能排序,所以不能用之前的去重used数组的方法
  2. 并且used数组不能作为全局变量,必须在每一层都要清空
class Solution:def __init__(self):self.res=[]self.path=[]# 不能用used数组,因为本题不能排序# used数组不能设置为全局变量 因为used只记录当前层的使用记录def backtracking(self,nums,startindex):if len(self.path)>=2:self.res.append(self.path[:])used=set([]) # 每层都更新为空for i in range(startindex,len(nums)):if (self.path and nums[i]<self.path[-1]) or (nums[i] in used):continueused.add(nums[i])self.path.append(nums[i])self.backtracking(nums,i+1)self.path.pop()returndef findSubsequences(self, nums: List[int]) -> List[List[int]]:#used=[0]*len(nums)self.backtracking(nums,0)return self.res

46 全排列

solution

class Solution:def __init__(self):self.res=[]self.path=[]def backtracking(self,nums):print(nums)if len(self.path)==len(nums):self.res.append(self.path[:])returnfor i in range(0,len(nums)):if nums[i] in self.path:continueself.path.append(nums[i])self.backtracking(nums)self.path.pop()returndef permute(self, nums: List[int]) -> List[List[int]]:targetlen=len(nums)self.backtracking(nums)return self.res

呜呜呜

if nums[i] in self.path:continue
这一句就是把已经放进path里的跳过!可以用in判断是否在数组中!
不要操作nums,比如去掉某个元素,这样容易出错!lzx对于python里的拷贝很不在行!躲避!

47 全排列2

hard for me

集合中有重复元素了!我不会去重!

solution

我把它想复杂了,可以先排列,然后用used数组的方法,不需要用set

class Solution:def __init__(self):self.res=[]self.path=[]def backtracking(self,nums,used):#print(self.res,self.path)if len(self.path)==len(nums):self.res.append(self.path.copy())returnfor i in range(0,len(nums)):print(nums[i])if (nums[i]==nums[i-1] and i>=1) and used[i-1]==0:continueif used[i]==1:continueused[i]=1self.path.append(nums[i])self.backtracking(nums,used)used[i]=0self.path.pop()return def permuteUnique(self, nums: List[int]) -> List[List[int]]:nums.sort()used=[0]*len(nums)self.backtracking(nums,used)return self.res

Suzy加油吧 Day 29 | 回溯算法进行中:491. 递增子序列,46 全排列,47 全排列2相关推荐

  1. 491. 递增子序列(回溯算法)

    给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一 ...

  2. 动态规划算法-04最长递增子序列问题

    最长递增子序列问题 简述 经典的动态规划问题. 问题描述 给定一个序列,求解其中长度最长的递增子序列. 问题分析 这种可以向下查询答案的很容易想到动态规划的解法. 要求长度为i的序列Ai={a1,a2 ...

  3. (算法)最长递增子序列

    问题: Given an array of N integer, find the length of the longest increasing subsequence. For example, ...

  4. LeetCode 491. 递增子序列(回溯+判重剪枝)

    1. 题目 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7] ...

  5. 【算法】最长递增子序列问题

    1.问题描述 有一个序列 A = [18, 17, 19, 6, 11, 21, 23, 15],求出最长递增子序列的个数. 2.算法描述 该问题解唯一,但解的形式不唯一.譬如,该问题最长递增子序列的 ...

  6. LeetCode 491. 递增子序列【数组,回溯算法,哈希表去重】

    491. 递增子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重复元素,如出现两个整数相等, ...

  7. leetcode算法题-- 最长递增子序列的个数★

    原题链接:https://leetcode-cn.com/problems/number-of-longest-increasing-subsequence/ 相关题目:最长上升子序列 lengths ...

  8. 代码随想录刷题记录:回溯算法篇

    前言 本专题主讲回溯. 回溯算法个人总结 参考了很多网上的教程,首先是该算法的代码模板总结如下: 代码模板 //回溯算法框架 List<Value> result; void backtr ...

  9. 一文了解贪心算法和回溯算法在前端中的应用

    一文了解贪心算法和回溯算法在前端中的应用 一.贪心算法 1.贪心算法是什么? 2.应用场景 3.场景剖析:零钱兑换 二.回溯算法 1.回溯算法是什么? 2.什么问题适合选用回溯算法解决? 2.应用场景 ...

最新文章

  1. 线程安全之strtok()函数
  2. 几篇JVM实战的东西
  3. jar2exe 配置jre
  4. [网络安全提高班] 一〇一.网络攻防溯源普及和医疗数据安全总结
  5. 笔试题 - 阶乘问题
  6. 网络安全技术之端口隔离
  7. uva 436 Arbitrage (II)
  8. container_of宏定义分析---linux内核
  9. php出现Cannot modify header information问题的解决方法
  10. openssh 加固
  11. Java Jad 反编译class文件
  12. 通俗易懂的讲解贝叶斯原理(保证简单)
  13. [GUET-CTF2019]NO SOS(考点:古典密码,培根加密)
  14. 应届生求职应聘简历PPT模板
  15. 洛谷P1600 天天爱跑步
  16. webstorm 移动到末尾并且换行快捷键
  17. win10如何关闭计算机设备和驱动器非硬盘图标
  18. java中finally语句是否一定会被执行
  19. java web中英翻译_中英文翻译简单web项目示例(3)
  20. 二进制开关理解和实现

热门文章

  1. MATLAB_LSB_隐藏水印和提取,附代码
  2. Spring Boot2 总结(二) Spring Security的基本配置
  3. 魔兽地图服务器存档修改本地存档,【Jass】Preload存档系统,本地写入文件并读取...
  4. 程序员小灰的算法总结
  5. 使用md5进行加密解密
  6. Web基础(三)Python Web
  7. 怎么将图片内容转换成文字?这两种方法可以轻松实现
  8. 批量修复自定义标题带来的word题注错误:错误,文档中没有指定样式的文字
  9. 关于表格分页缓存数据
  10. NLP-阅读理解-2015:MRC模型-指导机器去阅读并理解【开篇之作】【完形填空任务】【第一次构建大批量有监督机器阅读理解训练语料】【三种模型结构:LSTM、Attention、Impatient】