随笔分类 -  回溯法

摘要:描述 给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 链接 122. 买卖股票的最佳时机 II 阅读全文
posted @ 2021-12-22 12:13 DidUStudy 阅读(17) 评论(0) 推荐(0)
摘要:1、初步印象 回溯,就是遍历每个状态(或者说树节点),与递归密切相关,所以回溯法也经常和二叉树遍历,深度优先搜索混在一起,因为这两种方式都是用了递归。 回溯法就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。 2、可以解决的问题 组合问题:N个数里面按一定规则找出k个数的集合 排列问题:N个数按一 阅读全文
posted @ 2021-12-21 23:08 DidUStudy 阅读(139) 评论(0) 推荐(0)
摘要:描述 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。 链接 51. N 皇 阅读全文
posted @ 2021-12-21 11:40 DidUStudy 阅读(46) 评论(0) 推荐(0)
摘要:描述 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。 链接 491. 递增子序列 - 力扣(LeetCode) (leetcode-c 阅读全文
posted @ 2021-12-21 10:47 DidUStudy 阅读(61) 评论(0) 推荐(0)
摘要:描述 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 链接 47. 全排列 II - 力扣(LeetCode) (leetcode-cn.com) 解法 1 class Solution { 2 //存放结果 3 List<List<Integer>> result 阅读全文
posted @ 2021-12-20 22:55 DidUStudy 阅读(32) 评论(0) 推荐(0)
摘要:描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 链接 46. 全排列 - 力扣(LeetCode) (leetcode-cn.com) 解法一 1 class Solution { 2 3 List<List<Integer>> result 阅读全文
posted @ 2021-12-20 22:46 DidUStudy 阅读(27) 评论(0) 推荐(0)
摘要:描述 给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 链接 90. 子集 II - 力扣(LeetCode) (leetcode-cn.com) 解法一:直接回溯中剪枝 1 class 阅读全文
posted @ 2021-12-20 22:31 DidUStudy 阅读(25) 评论(0) 推荐(0)
摘要:描述 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 链接 78. 子集 - 力扣(LeetCode) (leetcode-cn.com) 解法 1 class Solution { 2 List 阅读全文
posted @ 2021-12-20 22:17 DidUStudy 阅读(27) 评论(0) 推荐(0)
摘要:描述 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.1 阅读全文
posted @ 2021-12-20 20:55 DidUStudy 阅读(204) 评论(0) 推荐(0)
摘要:描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 链接 131. 分割回文串 - 力扣(LeetCode) (leetcode-cn.com) 解法 1 class Solution { 2 Li 阅读全文
posted @ 2021-12-20 20:05 DidUStudy 阅读(32) 评论(0) 推荐(0)
摘要:描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 注意:解集不能包含重复的组合。 链接 40. 组合总和 II - 力扣(LeetCode) 阅读全文
posted @ 2021-12-19 22:07 DidUStudy 阅读(39) 评论(0) 推荐(0)
摘要:描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。 阅读全文
posted @ 2021-12-19 19:47 DidUStudy 阅读(39) 评论(0) 推荐(0)
摘要:描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 链接 17. 电话号码的字母组合 - 力扣(LeetCode) (leetcode-cn.com) 解法一:回溯 + 数组存储 阅读全文
posted @ 2021-12-18 22:45 DidUStudy 阅读(84) 评论(0) 推荐(0)
摘要:描述 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。解集不能包含重复的组合。 链接 216. 组合总和 III - 力扣(LeetCode) (leetcode-cn.com) 解法 1 class 阅读全文
posted @ 2021-12-18 22:23 DidUStudy 阅读(20) 评论(0) 推荐(0)
摘要:描述 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 链接 77. 组合 - 力扣(LeetCode) (leetcode-cn.com) 题解 1 class Solution { 2 List<List<Integer>> res 阅读全文
posted @ 2021-12-18 21:55 DidUStudy 阅读(33) 评论(0) 推荐(0)
摘要:描述 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 链接 200. 岛屿数量 - 力扣(LeetCode) (leetcode-cn 阅读全文
posted @ 2021-12-01 23:05 DidUStudy 阅读(32) 评论(0) 推荐(0)