
leetcode
A snicker
努力吧
展开
-
LeetCode热题 HOT52-100
我们进行广度优先搜索时,每次保存上一轮搜索的结果,然后对上一轮已经保存的结果中的每一个字符串尝试所有可能的删除一个括号的方法,然后将保存的结果进行下一轮搜索。所以就比较第k-1个房间的dp值,和第k-2个房间的dp值加上第k个房间的值。两重for循环,第一次for循环是循环nums的每一个i,第二次for循环是循环nums中的每个小于i的所有数j。dp[i,j]的意思是在数组i到j的范围内,k为分割戳点的左右加自身的最大数量。广度优先搜索,每一轮都删除字符串中的1个括号,直到出现合法匹配的字符串为止。...原创 2022-07-22 16:37:00 · 372 阅读 · 0 评论 -
LeetCode热题 HOT1-51
经典两数之和,可以通过暴力枚举解决(时间复杂度O(n^2)),当然也可以通过哈希表,hashtable.containsKey(),来选择判断x和target-x2、两数相加遍历两个链表,逐位计算它们的和原创 2022-06-21 16:18:29 · 335 阅读 · 0 评论 -
经典回溯算法+回头——77. 组合
明显的回溯和递归的区别:回溯是这个状态走完之后,回到上一个状态去,继续寻找下一个状态;递归是这个此时的这个状态会用到上一个状态的结果。这道题是经典的回溯+回头的题class Solution { public List<List<Integer>> combine(int n, int k) { List<List<Integer>> list = new ArrayList<>(); List<原创 2022-04-15 20:32:23 · 325 阅读 · 0 评论 -
矩阵元素最近距离(动态规划 或 BFS)
给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。BFS广度优先搜索class Solution { public int[][] updateMatrix(int[][] mat) { Queue <int[]> queue = new LinkedList<>(); int m = mat.length;原创 2022-04-04 17:23:24 · 774 阅读 · 0 评论 -
矩阵中的路径(dfs+剪枝、bfs)
class Solution { public boolean exist(char[][] board, String word) { char[] words = word.toCharArray(); for(int i=0;i<board.length;i++){ for(int j=0;j<board[0].length;j++){ if(dfs(board, words, i, j, 0.原创 2022-03-31 20:50:49 · 876 阅读 · 0 评论 -
最长不含重复字符的字符串(动态规划)
滑动窗口+数组class Solution { public int lengthOfLongestSubstring(String s) { int[] last = new int[128]; for(int i=0;i<128;i++){ last[i] = -1; } int res = 0; int start = 0; for(int i=0;i<s.l.原创 2022-03-31 16:18:21 · 870 阅读 · 0 评论 -
53. 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。class Solution { public int maxSubArray(int[] nums) { int m=0; int n=nums[0]; for原创 2022-03-14 23:33:23 · 400 阅读 · 0 评论