回溯
惠菁
我见过大海,看过繁星,但唯独遇见你,是我长久以来,所有奔赴的意义。
展开
-
【Java|golang】1079. 活字印刷---dfs+回溯
你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。 注意:本题中,每个活字字模只能使用一次。原创 2023-05-19 20:35:10 · 224 阅读 · 0 评论 -
【Java】698. 划分为k个相等的子集--回溯 + 剪树 + 数组排序加速搜索
给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。原创 2022-09-27 10:20:05 · 168 阅读 · 0 评论 -
【Java】797. 所有可能的路径---使用回溯方法和深度搜索,记得要开辟新的存储空间,否则永远都是对统一存储空间进行操作,然而最终的返回结果都相同!!!
给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序) 二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。 译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a 。 示例 1: 输入:graph = [[1,2],[3],[3],[]] 输出:[[0,1,3],[0,2,3]] 解释:有两条路径 0 -> 1 -> 3 和 0 -> 2 -> 3 示例原创 2021-08-25 10:06:12 · 115 阅读 · 0 评论 -
【Java】剑指 Offer 38. 字符串的排列---使用dfs深度遍历!!!
输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例: 输入:s = “abc” 输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”] 限制: 1 <= s 的长度 <= 8 代码: List<String> res; char[] c; public String[] permutation(String s) { res = new ArrayList();原创 2021-06-22 11:08:32 · 111 阅读 · 0 评论 -
【Java】1239. 串联字符串的最大长度---使用dfs+回溯!!!
给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串,如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 示例 1: 输入:arr = [“un”,“iq”,“ue”] 输出:4 解释:所有可能的串联组合是 “”,“un”,“iq”,“ue”,“uniq” 和 “ique”,最大长度为 4。 示例 2: 输入:arr = [“cha”,“r”,“act”,“ers”] 输出:6 解释:可能的解答有 “chaers” 和 “ac原创 2021-06-19 10:38:19 · 96 阅读 · 0 评论 -
【java】1723. 完成所有工作的最短时间---dfs,减叶,回溯以及优化回溯!!!
给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间。 请你将这些工作分配给 k 位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。请你设计一套最佳的工作分配方案,使工人的 最大工作时间 得以 最小化 。 返回分配方案中尽可能 最小 的 最大工作时间 。 示例 1: 输入:jobs = [3,2,3], k = 3 输出:3 解释:给每位工人分配一项工作,最大工作时间是 3 。 示例 2: 输入:jo原创 2021-05-08 10:14:38 · 126 阅读 · 0 评论