搜索
DFS
BFS
tianxin0919
Algorithm & SDEer
展开
-
USACO06NOV玉米田 Corn Fields
题目描述农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地。John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是John不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。John想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案)输入格式第一行:两个整数M原创 2020-05-29 16:01:52 · 187 阅读 · 0 评论 -
LeetCode279完全平方数(暴搜dfs+记忆化dfs+动态规划+BFS)四种解法
暴搜dfsclass Solution { public int numSquares(int n) { return dfs(n); } public int dfs(int n){ int val = (int)Math.sqrt(n); if(val*val == n){ return 1;...原创 2020-04-17 19:03:38 · 153 阅读 · 0 评论 -
LeetCode695
岛屿的最大面积,类似感染区域的最大面积考察:DFS每一个点可以扩散的最大面积,被它感染的区域里面的点不用再计算,用vis数组记录,最后求最大值//DFSpublic static void main(String[] args) { int[][] a = {{1,1,0},{1,1,0},{0,0,1}}; System.out.println(maxAr...原创 2020-02-09 22:22:12 · 111 阅读 · 0 评论 -
LeetCode547
朋友圈考察知识点:无向连通图的个数方法1:DFS方法2:BFS//DFSpublic static void main(String[] args) { int[][] a = {{1,1,0},{1,1,0},{0,0,1}}; System.out.println(findCircleNum(a)); //result=2 } pub...原创 2020-02-09 21:18:49 · 165 阅读 · 0 评论 -
LeetCode491
递增子序列考察知识点:DFS+Set(去重)样例:[4, 6, 7, 7]ans:[4,6] [4,7] [4,6,7] [4,7,7] [4,6,7,7][6,7] [6,7,7][7,7]public static List<List<Integer>> findSubsequences(int[] nums){ Set<List&...原创 2020-02-05 21:51:21 · 193 阅读 · 0 评论 -
LeetCode473
火柴拼正方形题目意思:在一个数组中找出四组数,使得每一组的和都是相等的考察知识点:dfs+回溯public static boolean makesquare(int[] nums){ int tsum = 0; for(int i:nums){ tsum+=i; } if(nums.length<...原创 2020-02-04 20:55:36 · 231 阅读 · 0 评论 -
LeetCode394
字符串解码:样例:s = “3[a]2[bc]”, 返回 “aaabcbc”.s = “3[a2[c]]”, 返回 “accaccacc”.s = “2[abc]3[cd]ef”, 返回 “abcabccdcdcdef”方法1:递归方法2:栈//方法1:DFSpublic static String decodeString(String s){ char[] ch...原创 2020-02-04 18:19:07 · 117 阅读 · 0 评论 -
LeetCode332
重新安排行程找到字典序最小的一组飞机行程安排知识背景:图论 欧拉路径(一笔画问题)欧拉路径:一个连通有向图 G 有欧拉路径,指存在一个顶点,从它出发,沿着有向边的方向,可以不重复地遍历图中所有的边欧拉回路:在欧拉路径的基础上,加上"起点也是终点"这一限制考察知识点:DFS+优先队列+逆序插入public static List<String> findItinerary(L...原创 2020-02-04 15:34:12 · 257 阅读 · 0 评论 -
LeetCode207+210
题目:课程安排问题思路:BFS或DFS参数:numCourses代表课程总数,prerequisites二维数组表示每门课程的先行课[2,1]表示要想学2课程,必须先学习1课程,一门课可能有多门先行课考察知识点:拓扑排序,查找拓扑图中是否存在环,若存在,则无法安排BFS实现:(用队列queue实现)public static int[] canFinish(int...原创 2020-02-02 23:12:37 · 122 阅读 · 0 评论