随笔分类 - 算法
摘要:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶魔守卫
阅读全文
摘要:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。 说明: 分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 来源:力扣(LeetCode) 链接:https://lee
阅读全文
摘要:给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit 。每一次操作,你可以将 nums 中的任何整数替换为 1 到 limit 之间的另一个整数。 如果对于所有下标 i(下标从 0 开始),nums[i] + nums[n - 1 - i] 都等于同一个数,则数组 nums 是 互
阅读全文
摘要:链接 你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。 我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。 有序表 时间复杂度:O(n * k * logk) 注意有
阅读全文
摘要:给你一个字符串类型的数组arr,譬如: String[] arr = { "b\st", "d\", "a\d\e", "a\b\c" }; 把这些路径中蕴含的目录结构给打印出来,子目录直接列在父目录下面,并比父目录向右进两格,就像这样: a b c d e b cst d 同一级的需要按字母顺序排
阅读全文
摘要:应用 公式一 从0开始 import java.math.BigInteger; import java.util.Scanner; public class Main { /** * C(2n, n) / (n + 1) */ private static BigInteger catalan(i
阅读全文
摘要:链接 给定一颗二叉树,已知所有节点的值都不一样, 返回其中最大的且符合搜索二叉树条件的最大拓扑结构的大小。 拓扑结构是指树上的一个联通块。 import java.util.HashMap; import java.util.Map; import java.util.Scanner; public
阅读全文
摘要:链接 给定一个四则运算(带括号表达式)加减乘除由+ - * /表示,求运算结果 import java.util.Scanner; import java.util.Stack; public class Main { private static void push(Stack<Integer>
阅读全文
摘要:链接 城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回由这些建筑物形成的 天际线 。 每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示: lefti
阅读全文
摘要:链接 给定一个无序数组arr,求出需要排序的最短子数组的长度,对子数组排序后能使得整个数组有序,即为需要排序的数组。例如:arr=[1,5,3,4,2,6,7]返回4,因为只有[5,3,4,2]需要排序。 import java.util.Scanner; public class Main { p
阅读全文
摘要:链接 给定一个链表,再给定一个整数 pivot,请将链表调整为左部分都是值小于 pivot 的节点,中间部分都是值等于 pivot 的节点, 右边部分都是大于 pivot 的节点。 除此之外,对调整后的节点顺序没有更多要求。 import java.util.Scanner; public clas
阅读全文
摘要:public class Main { static class Node { Node next; Node random; int val; public Node(int val) { this.val = val; } } private static Node copy(Node head
阅读全文
摘要:链接 数组小和的定义如下: 例如,数组s = [1, 3, 5, 2, 4, 6],在s[0]的左边小于或等于s[0]的数的和为0;在s[1]的左边小于或等于s[1]的数的和为1;在s[2]的左边小于或等于s[2]的数的和为1+3=4;在s[3]的左边小于或等于s[3]的数的和为1; 在s[4]的左
阅读全文
摘要:链接 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是) import java.util
阅读全文
摘要:链接 给定一个矩阵matrix,先从左上角开始,每一步只能往右或者往下走,走到右下角。然后从右下角出发,每一步只能往上或者往左走,再回到左上角。任何一个位置的数字,只能获得一遍。返回最大路径和。 import java.util.Arrays; import java.util.Scanner; p
阅读全文
摘要:链接 给定一棵二叉树,已经其中没有重复值的节点,请判断该二叉树是否为搜索二叉树和完全二叉树。 import java.util.Scanner; public class Main { private static CBTInfo solveCBT(Node root) { if (root ==
阅读全文
摘要:链接 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 import java.util.Scanner; public class Main { private static Node solve(Node root, Node h1, Node
阅读全文
摘要:链接 给定一个链表,请判断该链表是否为回文结构。 import java.util.Scanner; public class Main { static class Node { Node next; int val; public Node(int val) { this.val = val;
阅读全文
摘要:链接 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 如果数组元素个数小于 2,则返回 0。 class Solution { private int getBucketIndex(int min, int max, int size, int val) { return (int
阅读全文
摘要:链接 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。 返回载到每一个人所需的最小船数。(保证每个人都能被船载)。 import java.util.Arrays; class Solution
阅读全文

浙公网安备 33010602011771号