
回溯算法
XIIV13
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题笔记 51. N皇后
题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,...原创 2019-12-16 19:53:01 · 163 阅读 · 0 评论 -
LeetCode刷题笔记 1049. 最后一块石头的重量 II
题目描述有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头...原创 2019-12-16 16:01:27 · 255 阅读 · 0 评论 -
LeetCode刷题笔记 813. 最大平均值和的分组
题目描述我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。示例:输入:A = [9,1,2,3,9]K = 3输出: 20解释:A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + ...原创 2019-12-10 21:28:40 · 168 阅读 · 0 评论 -
LeetCode刷题笔记 813. 最大平均值和的分组
题目描述我们将给定的数组 A 分成 K 个相邻的非空子数组 ,我们的分数由每个子数组内的平均值的总和构成。计算我们所能得到的最大分数是多少。注意我们必须使用 A 数组中的每一个数进行分组,并且分数不一定需要是整数。示例:输入:A = [9,1,2,3,9]K = 3输出: 20解释:A 的最优分组是[9], [1, 2, 3], [9]. 得到的分数是 9 + (1 + 2 + ...原创 2019-12-04 20:11:12 · 294 阅读 · 0 评论 -
LeetCode刷题笔记 638. 大礼包
题目描述在LeetCode商店中, 有许多在售的物品。然而,也有一些大礼包,每个大礼包以优惠的价格捆绑销售一组物品。现给定每个物品的价格,每个大礼包包含物品的清单,以及待购物品清单。请输出确切完成待购清单的最低花费。每个大礼包的由一个数组中的一组数据描述,最后一个数字代表大礼包的价格,其他数字分别表示内含的其他种类物品的数量。任意大礼包可无限次购买。你不可以购买超出待购清单的物品,即使...原创 2019-12-03 11:32:35 · 432 阅读 · 0 评论 -
LeetCode刷题笔记 139. 单词拆分*
题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例:输入: s = “applepenapple”, wordDict = [“apple”, “pen”]输出: true解释: 返回 true 因为 “applepen...原创 2019-10-08 20:43:06 · 253 阅读 · 0 评论 -
LeetCode刷题笔记 1079. 活字印刷(?)
题目描述你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。示例:输入:“AAB”输出:8解释:可能的序列为 “A”, “B”, “AA”, “AB”, “BA”, “AAB”, “ABA”, “BAA”。总结SC 回溯的题有些用数学是投机取巧,但有些不是,是6SC2 就是抽象出来,不在乎实际排列出来是什么字符串,而是 ...原创 2019-10-02 15:29:46 · 287 阅读 · 0 评论 -
LeetCode刷题笔记 306. 累加数*
题目描述累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是累加数。说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。示例:输入: “112358”...原创 2019-10-02 13:19:00 · 243 阅读 · 0 评论 -
LeetCode刷题笔记 842. 将数组拆分成斐波那契序列*
题目描述给定一个数字字符串 S,比如 S = “123456579”,我们可以将它分成斐波那契式的序列 [123, 456, 579]。形式上,斐波那契式序列是一个非负整数列表 F,且满足:0 <= F[i] <= 2^31 - 1,(也就是说,每个整数都符合 32 位有符号整数类型);F.length >= 3;对于所有的0 <= i < F.lengt...原创 2019-09-29 21:47:25 · 270 阅读 · 0 评论 -
LeetCode刷题笔记 60. 第k个排列*
题目描述给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例:输入: n = 3, k = 3输出: “...原创 2019-09-22 15:47:54 · 180 阅读 · 0 评论 -
LeetCode刷题笔记 回溯算法集合
总结其实回溯算法关键在于:不合适就退回上一步然后通过约束条件, 减少时间复杂度组合总和class Solution { public List<List<Integer>> combinationSum(int[] candidates, int target) { List<List<Integer>> listAl...原创 2019-07-12 23:54:27 · 263 阅读 · 0 评论 -
LeetCode刷题笔记 22. 括号生成
总结三段代码复杂度依此递增DCd的先填充待会要处理的数组真是学到了,一种新的思路Sampel Code 1class Solution { private char[] buf; private List<String> ans; public List<String> generateParenthesis(int n) { ...原创 2019-10-01 13:52:29 · 216 阅读 · 0 评论 -
LeetCode刷题笔记 17. 电话号码的字母组合
题目描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].总结这种类似排列组合的东西用回溯Sample & Demo Codeclass Soluti...原创 2019-09-12 17:44:49 · 249 阅读 · 0 评论