面试经典 150 题-Kadane LeetCode 面试经典 150 题-Kadane最大子数组和动态规划 划分阶段:按子数组结尾的位置划分阶段。 定义状态:dp[i]表示以nums[i]结尾的最大子数组和。 状态转移方程:dp[i] = max(dp[i-1], 0) + nums[i]。 初始条件:dp[0] = nums[0]。 返回结果:维护一个最大和变量。 123456789101112131415 2025-02-27 算法笔记 > Kadane #Kadane
LeetCode 面试经典 150 题-分治 LeetCode 面试经典 150 题-分治将有序数组转换为二叉搜索树分治法如果只有一个节点,直接作为根;前面的部分是左子树,后面的部分是右子树。 12345678910111213141516class Solution { public TreeNode sortedArrayToBST(int[] nums) { return dfs(nums, 0, 2025-02-25 算法笔记 > 分治 #分治
面试经典 150 题-回溯 LeetCode 面试经典 150 题-回溯从今天开始练习ACM模式的题目,从牛客上找力扣对应或相似的题目。 字符串组合穷举 使用treeset去重,重定义比较函数。 外层循环枚举字符串长度,内层循环枚举起始位置,加入集合。 1234567891011121314151617181920212223242526272829303132import java.util.*;// 注意类名必须为 M 2025-02-15 算法笔记 > 回溯 #回溯
面试经典 150 题-图 LeetCode 面试经典 150 题-图岛屿数量深度优先搜索 遍历图,当遇到为1的格子时,开始深度优先搜索。 判断当前位置是否合法,判断是否是1防止重复遍历。 标记当前位置已访问过,然后遍历上下左右四个方向。 123456789101112131415161718192021222324252627282930313233343536373839404142434445class Soluti 2025-01-22 算法笔记 > 图 #二叉树
面试经典 150 题-二叉树 LeetCode 面试经典 150 题-二叉树二叉树的最大深度深度优先搜索当前节点最大深度为max(左子树最大深度, 右子树最大深度) + 1. 12345678class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; 2025-01-15 算法笔记 > 二叉树 #二叉树
面试经典 150 题-队列 LeetCode 面试经典 150 题-队列环形链表快慢指针定义快慢指针,若两指针最后相遇则有环,否则快指针会指向空。 123456789101112131415161718192021222324252627282930/** * Definition for singly-linked list. * class ListNode { * int val; * Lis 2025-01-12 算法笔记 > 队列 #队列
面试经典 150 题-栈 LeetCode 面试经典 150 题-栈有效的括号栈 如果是左括号则入栈,如果是右括号则查看栈顶是否匹配。 最后判断栈是否为空。 1234567891011121314151617181920212223242526272829class Solution { public boolean isValid(String s) { // 剪枝 2025-01-10 算法笔记 > 栈 #栈
面试经典 150 题-区间 LeetCode 面试经典 150 题-区间汇总区间模拟1234567891011121314151617181920212223242526272829303132333435class Solution { public List<String> summaryRanges(int[] nums) { List<String> r 2025-01-09 算法笔记 > 区间 #贪心 #区间
面试经典 150 题-哈希表 LeetCode 面试经典 150 题-哈希表赎金信哈希表 对magzine中的字符做统计。 遍历ransomNote字符串,对出现的字符,哈希表-1,如果出现小于0的情况则返回false,否则最后返回true。 123456789101112131415161718class Solution { public boolean canConstruct(String ranso 2025-01-06 算法笔记 > 哈希表 #哈希表
面试经典 150 题-矩阵 LeetCode 面试经典 150 题-矩阵有效数独模拟先判断行,再判断列,再判断九宫格。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950class Solution { public boolean isValidSudoku(char[][] 2025-01-04 算法笔记 > 矩阵 #矩阵