随笔分类 -  数据结构与算法

摘要: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 阅读全文
posted @ 2020-12-01 23:02 牛有肉 阅读(115) 评论(0) 推荐(0) 编辑
摘要: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; 阅读全文
posted @ 2020-12-01 20:20 牛有肉 阅读(143) 评论(0) 推荐(0) 编辑
摘要: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 阅读全文
posted @ 2020-11-19 21:25 牛有肉 阅读(118) 评论(0) 推荐(0) 编辑
摘要:JAVA BFS: public final int findTilt(TreeNode root) { if (root == null) return 0; Map<TreeNode, Integer> cacheMap = new HashMap<TreeNode, Integer>(); Q 阅读全文
posted @ 2020-11-18 11:17 牛有肉 阅读(127) 评论(0) 推荐(0) 编辑
摘要:虚拟单位解法 JAVA: /** * @Author Niuxy * @Date 2020/11/16 11:29 下午 * @Description 虚拟砖块 */ public final int leastBricks(List<List<Integer>> wall) { int[] col 阅读全文
posted @ 2020-11-17 00:20 牛有肉 阅读(129) 评论(0) 推荐(0) 编辑
摘要:很简单的题目,但是多叉树的操作也是蛮重要的。比如实现 B 树 B+ 树时,这些操作都要用到,所以写一下。 JAVA: class Node { public int val; public List<Node> children; public Node() { } public Node(int 阅读全文
posted @ 2020-11-11 17:20 牛有肉 阅读(136) 评论(0) 推荐(0) 编辑
摘要:概率的映射可以转化为前缀和上的区间映射,在前缀和中进行二分查找即可在相应概率下返回坐标。 class Solution { int sum = 0; List<Integer> psum = new LinkedList<Integer>(); Random random = new Random( 阅读全文
posted @ 2020-11-11 00:13 牛有肉 阅读(119) 评论(0) 推荐(0) 编辑
摘要:按距离进行 BFS 即可,JAVA: int[][] dir = new int[][]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; public final int[][] updateMatrix(int[][] matrix) { if (matrix == null 阅读全文
posted @ 2020-11-09 00:12 牛有肉 阅读(164) 评论(0) 推荐(0) 编辑
摘要:采用 BFS 算法逐行遍历,JAVA 解法: public final List<Integer> largestValues(TreeNode root) { List<Integer> reList = new LinkedList<Integer>(); if (root == null) r 阅读全文
posted @ 2020-11-07 18:55 牛有肉 阅读(106) 评论(0) 推荐(0) 编辑
摘要:需要注意边界条件以及 环 的处理。 JAVA 中序遍历: public final TreeNode convertBiNode(TreeNode root) { return dfs2(root); } public final TreeNode dfs2(TreeNode node) { if 阅读全文
posted @ 2020-11-01 23:13 牛有肉 阅读(88) 评论(0) 推荐(0) 编辑
摘要:DFS 解法: public final int findBottomLeftValue(TreeNode root) { if (root == null) return 0; return find(root, 0).node.val; } private final NodeAndDepth 阅读全文
posted @ 2020-11-01 00:49 牛有肉 阅读(101) 评论(0) 推荐(0) 编辑
摘要:状态转移方程的定义为:dp( K,i ) 表示经历 K 站乘坐到 flight[i] 航班终点的最低票价。 因为 flight 中的元素存在前后置关系,所以乘坐某航班的上一航班的集合是可以确定的。 dp( K,i ) = Math.min( dp( K-1,j ) ),其中 j 为可以作为上一趟航班 阅读全文
posted @ 2020-10-31 16:12 牛有肉 阅读(165) 评论(0) 推荐(0) 编辑
摘要: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 阅读全文
posted @ 2020-10-08 00:06 牛有肉 阅读(157) 评论(0) 推荐(0) 编辑
摘要:最近在项目中遇到了很多模糊匹配字符串的需求,总结一下实现思路。 大体需求场景是这样的:省项目中,各个地市报送的本地证照目录非常不规范,只有不规范的证照名称,且没有与国家标准证照目录中的证照名称进行对应。需要将这些名称不规范的证照与国家标准目录中的证照对应起来。 拿到一个不规范的证照名称,需要将其与国 阅读全文
posted @ 2020-10-02 22:18 牛有肉 阅读(6843) 评论(1) 推荐(1) 编辑
摘要:题目简单,练习一下 BFS 与 DFS。 BFS: private final boolean isLeaf(TreeNode node) { return node.left == null && node.right == null; } public final int sumOfLeftLe 阅读全文
posted @ 2020-09-25 00:54 牛有肉 阅读(107) 评论(0) 推荐(0) 编辑
摘要:JAVA DFS 标记解法: public final int countBattleshipsDFS(char[][] board) { if (board.length == 0 || board[0].length == 0) return 0; int res = 0; for (int i 阅读全文
posted @ 2020-09-22 09:17 牛有肉 阅读(198) 评论(0) 推荐(0) 编辑
摘要:最优解法为借助贝祖定理计算最大公约数,但本次只拿出 BFS 解法。个人觉着虽然效率低下,但BFS 解法更接近计算机思维,我们告诉计算机如何去做,其余的由来计算机完成。更符合刷题的初衷。 JAVA: private final boolean canMeasureWaterBFS(int x, int 阅读全文
posted @ 2020-09-21 23:38 牛有肉 阅读(266) 评论(0) 推荐(0) 编辑
摘要:设计逻辑运算,真值表达式为: 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 & ~ 阅读全文
posted @ 2020-09-07 01:20 牛有肉 阅读(165) 评论(0) 推荐(0) 编辑
摘要:常规计数: 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]) 阅读全文
posted @ 2020-09-05 01:28 牛有肉 阅读(241) 评论(0) 推荐(0) 编辑
摘要:JAVA: public final int rob(TreeNode root) { Map<String, Integer> cache = new HashMap<String, Integer>(); return Math.max(rob(root, true, cache), rob(r 阅读全文
posted @ 2020-09-01 22:35 牛有肉 阅读(184) 评论(0) 推荐(0) 编辑