随笔分类 - 数据结构与算法
摘要:JAVA 遍历: public final boolean judgeCircle(String moves) { int x = 0, y = 0; for (int i = 0; i < moves.length(); i++) { char c = moves.charAt(i); switc
阅读全文
摘要:JAVA DFS: public final int maxAreaOfIslandDFS(int[][] grid) { int re = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[0].length;
阅读全文
摘要:JAVA 暴力: public final int subarraySum(int[] nums, int k) { int res = 0; for (int i = 0; i < nums.length; i++) { int currK = k; for (int j = i; j < num
阅读全文
摘要:JAVA BFS: public final int findTilt(TreeNode root) { if (root == null) return 0; Map<TreeNode, Integer> cacheMap = new HashMap<TreeNode, Integer>(); Q
阅读全文
摘要:虚拟单位解法 JAVA: /** * @Author Niuxy * @Date 2020/11/16 11:29 下午 * @Description 虚拟砖块 */ public final int leastBricks(List<List<Integer>> wall) { int[] col
阅读全文
摘要:很简单的题目,但是多叉树的操作也是蛮重要的。比如实现 B 树 B+ 树时,这些操作都要用到,所以写一下。 JAVA: class Node { public int val; public List<Node> children; public Node() { } public Node(int
阅读全文
摘要:概率的映射可以转化为前缀和上的区间映射,在前缀和中进行二分查找即可在相应概率下返回坐标。 class Solution { int sum = 0; List<Integer> psum = new LinkedList<Integer>(); Random random = new Random(
阅读全文
摘要:按距离进行 BFS 即可,JAVA: int[][] dir = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; public final int[][] updateMatrix(int[][] matrix) { if (matrix == null
阅读全文
摘要:采用 BFS 算法逐行遍历,JAVA 解法: public final List<Integer> largestValues(TreeNode root) { List<Integer> reList = new LinkedList<Integer>(); if (root == null) r
阅读全文
摘要:需要注意边界条件以及 环 的处理。 JAVA 中序遍历: public final TreeNode convertBiNode(TreeNode root) { return dfs2(root); } public final TreeNode dfs2(TreeNode node) { if
阅读全文
摘要:DFS 解法: public final int findBottomLeftValue(TreeNode root) { if (root == null) return 0; return find(root, 0).node.val; } private final NodeAndDepth
阅读全文
摘要:状态转移方程的定义为:dp( K,i ) 表示经历 K 站乘坐到 flight[i] 航班终点的最低票价。 因为 flight 中的元素存在前后置关系,所以乘坐某航班的上一航班的集合是可以确定的。 dp( K,i ) = Math.min( dp( K-1,j ) ),其中 j 为可以作为上一趟航班
阅读全文
摘要:DFS 解法: public final int findCircleNum(int[][] M) { if (M == null || M.length == 0) return 0; int re = 0; for (int i = 0; i < M.length; i++) { for (in
阅读全文
摘要:最近在项目中遇到了很多模糊匹配字符串的需求,总结一下实现思路。 大体需求场景是这样的:省项目中,各个地市报送的本地证照目录非常不规范,只有不规范的证照名称,且没有与国家标准证照目录中的证照名称进行对应。需要将这些名称不规范的证照与国家标准目录中的证照对应起来。 拿到一个不规范的证照名称,需要将其与国
阅读全文
摘要:题目简单,练习一下 BFS 与 DFS。 BFS: private final boolean isLeaf(TreeNode node) { return node.left == null && node.right == null; } public final int sumOfLeftLe
阅读全文
摘要:JAVA DFS 标记解法: public final int countBattleshipsDFS(char[][] board) { if (board.length == 0 || board[0].length == 0) return 0; int res = 0; for (int i
阅读全文
摘要:最优解法为借助贝祖定理计算最大公约数,但本次只拿出 BFS 解法。个人觉着虽然效率低下,但BFS 解法更接近计算机思维,我们告诉计算机如何去做,其余的由来计算机完成。更符合刷题的初衷。 JAVA: private final boolean canMeasureWaterBFS(int x, int
阅读全文
摘要:设计逻辑运算,真值表达式为: public final int singleNumber0(int[] nums) { int x = 0, y = 0; for (int i = 0; i < nums.length; i++) { int z = nums[i]; x = (x & ~y & ~
阅读全文
摘要:常规计数: public final int singleNumber0(int[] nums) { Arrays.sort(nums); for (int i = 0; i < nums.length; i++) { if (i > 0) { if (nums[i] == nums[i - 1])
阅读全文
摘要:JAVA: public final int rob(TreeNode root) { Map<String, Integer> cache = new HashMap<String, Integer>(); return Math.max(rob(root, true, cache), rob(r
阅读全文