
搜索-DFS
文章平均质量分 64
STILLxjy
不要让任何人打乱你生活的节奏
展开
-
(ByteDance)求全排列
字节面试二面算法题。题目:求无重复数组的求排列。思路是由dfs算法,每次从数组中取出一个没有被取出的数(即f[i] == 0),但取出所有数时,得到一种排列方式。回溯时,还原f[i] 的状态,删除当前列表中的最后的元素。代码package com.STILLxjy.codedance;import java.util.ArrayList;import java.util.List;public class permute { public static void main(S原创 2020-11-19 09:30:29 · 255 阅读 · 0 评论 -
(LeetCode 337)打家劫舍 III [深度优先搜索 + 相邻关系不兼容问题]
337. 打家劫舍 III在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1...原创 2018-11-13 16:51:22 · 304 阅读 · 0 评论 -
(LeetCode 129)求根到叶子节点数字之和 [简单DFS ]
129. 求根到叶子节点数字之和给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点...原创 2018-11-13 22:34:26 · 361 阅读 · 0 评论 -
(LeetCode 515)在每个树行中找最大值 [简单DFS]
515. 在每个树行中找最大值您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]分析:在进行dfs遍历的时候,记录当前节点所在的深度,相同深度中保留最大值即可。AC代码:/** * Definition...原创 2018-11-13 23:04:46 · 243 阅读 · 0 评论 -
(LeetCode 513) 找树左下角的值 [DFS + 找树左下角的值=叶子节点 + 最左(第一次出现) ]
513. 找树左下角的值给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7分析:题目求解问题树的最后一行找到最左边的值 等价...原创 2018-11-13 23:25:01 · 394 阅读 · 0 评论 -
(LeetCode 546)移除盒子 [DP经典难题 + DFS]
546. 移除盒子给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >= 1),这样一轮之后你将得到 k*k 个积分。当你将所有盒子都去掉之后,求你能获得的最大积分和。示例 1:输入:[1, 3, 2, 2, 2, 3, 4, 3, 1]输出:2...原创 2018-12-19 19:43:50 · 3411 阅读 · 0 评论 -
(LeetCode 690)员工的重要性 [简单递归]
690. 员工的重要性给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体...原创 2018-12-16 00:46:39 · 213 阅读 · 0 评论 -
(LeetCode 841) 钥匙和房间 [简单DFS]
841. 钥匙和房间有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v...原创 2018-12-16 01:02:40 · 228 阅读 · 0 评论 -
(LeetCode 494)目标和 [DFS + 分类讨论]
494. 目标和给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释:-1+1+1+1+1 = 3+1-1+1+1+1...原创 2018-12-16 11:44:53 · 757 阅读 · 0 评论 -
(LeetCode 329)矩阵中的最长递增路径 [简单DP & 公式:dp[x][y] = dp[xx][yy] + 1]
329. 矩阵中的最长递增路径给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[[9,9,4],[6,6,8],[2,1,1]]输出: 4解释: 最长递增路径为 [1, 2, 6, 9]。示例 2:输入: nums =[[3,4,5],...原创 2018-12-28 00:50:59 · 272 阅读 · 0 评论 -
(LeetCode 934)最短的桥 [简单DFS + BFS]
934. 最短的桥在给定的二维二进制数组 A 中,存在两座岛。(岛是由四面相连的 1 形成的一个最大组。)现在,我们可以将 0 变为 1,以使两座岛连接起来,变成一座岛。返回必须翻转的 0 的最小数目。(可以保证答案至少是 1。)示例 1:输入:[[0,1],[1,0]]输出:1示例 2:输入:[[0,1,0],[0,0,0],[0,0,1]]输出:2示例 3:输入:[[1,...原创 2018-12-29 17:06:20 · 666 阅读 · 0 评论 -
(LeetCode 886)可能的二分法 [01着色问题,dfs模拟]
886. 可能的二分法给定一组 N 人(编号为 1, 2, …, N), 我们想把每个人分进任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。形式上,如果 dislikes[i] = [a, b],表示不允许将编号为 a 和 b 的人归入同一组。当可以用这种方法将每个人分进两组时,返回 true;否则返回 false。示例 1:输入:N = 4, dislikes =...原创 2019-01-01 15:30:24 · 1220 阅读 · 0 评论 -
(LeetCode 216)组合总和 III [DFS:简单入门 + 去重]
216. 组合总和 III找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]分析:此题是...原创 2018-11-02 20:02:26 · 264 阅读 · 0 评论 -
(LeetCode 40) 组合总和 II [DFS: 去重]
40. 组合总和 II给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,...原创 2018-11-02 19:33:23 · 502 阅读 · 0 评论 -
(LeetCode 39)组合总和 [DFS: 暴力搜索 + 剪枝 + 去重]
39. 组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解...原创 2018-11-01 21:48:34 · 765 阅读 · 0 评论 -
(POJ3009)Curling 2.0 <DFS求最小步数>
题目链接:http://poj.org/problem?id=3009 Curling 2.0 DescriptionOn Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules are somewhat different from ours. The game i原创 2016-11-20 12:16:46 · 495 阅读 · 0 评论 -
(POJ1321) 棋盘问题 <DFS ,八皇后问题的变形,皇后数目小于等于行数即有些行可以不放>
[TOC] 棋盘问题 Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。原创 2016-11-20 16:23:33 · 917 阅读 · 0 评论 -
(POJ2531)Network Saboteur <枚举+状态压缩 || DFS+剪枝>
Network Saboteur DescriptionA university network is composed of N computers. System administrators gathered information on the traffic between nodes, and carefully divided the network into two subnetw原创 2016-11-21 21:18:34 · 545 阅读 · 0 评论 -
(POJ 3411)Paid Roads <DFS>
Paid Roads DescriptionA network of m roads connects N cities (numbered from 1 to N). There may be more than one road connecting one city with another. Some of the roads are paid. There are two ways to原创 2017-01-04 13:15:56 · 885 阅读 · 0 评论 -
(POJ 1724)ROADS <DFS + 简单剪枝>
ROADS DescriptionN cities named with numbers 1 … N are connected with one-way roads. Each road has two parameters associated with it : the road length and the toll that needs to be paid for the road (原创 2017-01-04 14:13:34 · 531 阅读 · 0 评论 -
(POJ 1691)Painting A Board <top序列 + DFS>
Painting A Board DescriptionThe CE digital company has built an Automatic Painting Machine (APM) to paint a flat board fully covered by adjacent non-overlapping rectangles of different sizes each with原创 2017-01-04 17:01:40 · 517 阅读 · 0 评论 -
(POJ 1191)棋盘分割 <DFS>
棋盘分割 Description将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行) Input第1行为一个整数n(1 < n < 15)。 第2行至第9行每行为8个小于100的非负整数,表示棋盘上相应格子的分值。每行相邻两数之原创 2017-01-04 20:50:01 · 453 阅读 · 0 评论 -
(POJ 1159)Palindrome <最长公共子序列 / 滚动数组优化 / 记忆化搜索> 简单回文数
Palindrome DescriptionA palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, deter原创 2017-01-05 11:02:59 · 714 阅读 · 0 评论 -
(HDU 2821)Pusher DFS + 在一个方向上可以移动多位
Pusher Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others) Total Submission(s): 1508 Accepted Submission(s): 571 Special JudgeProblem Description PusherBoy is an原创 2017-05-16 20:15:21 · 437 阅读 · 0 评论 -
(POJ 1270)Following Orders 求序列在限制条件下的 [全排列]
Following Orders Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5218 Accepted: 2126 DescriptionOrder is an important concept in mathematics and in computer science. For example,原创 2017-10-13 17:40:11 · 583 阅读 · 0 评论 -
(LeetCode 22)括号生成 [ 思路详解+ DFS : 暴力 + 剪枝]
22. 括号生成给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]分析:我们可以将题目转化为:有一个2*n长度的数组,每一个位置你可以放’(’ 或者 ‘)’。让你输出其中满足以下两个条件的所有结果:1:’...原创 2018-10-31 21:41:26 · 867 阅读 · 0 评论 -
(POJ 1488) A Knight's Journey <DFS>
A Knight’s Journey DescriptionBackground The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journey around the world. Whenever a knigh原创 2016-11-20 00:00:49 · 528 阅读 · 0 评论