携程笔试 携程笔试0313诗模拟12345678910111213import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); 2025-03-18 算法笔记 > 笔试真题 #贪心 #并查集
京东笔试真题 京东笔试0315数组价值分析比较最大元素-第二小元素和第二大元素-最小元素,取较小值。 12345678910111213141516171819202122import java.util.*;public class Main { public static void main (String[] args) { Scanner sc = new Sca 2025-03-17 算法笔记 > 笔试真题 #哈希表 #排序
美团笔试真题 美团笔试0308小牛的文本加密模拟123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import java.util.*;public class Main { public static void main(String[ 2025-03-16 算法笔记 > 笔试真题 #哈希表 #排序
面试经典 150 题-动态规划 LeetCode 面试经典 150 题-动态规划打家劫舍动态规划 定义状态:dp[i]表示当前能够偷盗的最大金额。 状态转移:dp[i] = max(dp[i-1], dp[i-2] + nums[i])。 初始条件:dp[0] = nums[0]。 返回结果:dp[n-1]。 空间优化:可以用两个变量代替dp[i-1]和dp[i-2]。 1234567891011class 2025-03-09 算法笔记 > 动态规划 #动态规划
面试经典 150 题-数学 LeetCode 面试经典 150 题-数学回文数分析反转整数,再进行比较。 123456789101112131415class Solution { public boolean isPalindrome(int x) { // 边界处理,负数一定不是回文数 if (x < 0) { return fa 2025-03-07 算法笔记 > 数学 #数学
面试经典 150 题-位运算 LeetCode 面试经典 150 题-位运算二进制求和位运算逐位相加,标记进位。 123456789101112131415161718192021222324252627class Solution { public String addBinary(String a, String b) { // a是较长字符串 int m = a.le 2025-03-05 算法笔记 > 位运算 #位运算
面试经典 150 题-堆 LeetCode 面试经典 150 题-堆数组中的第K个最大元素堆排序 建立一个大小为K的最小堆。 遍历数组中的剩余元素,如果它大于堆顶元素,则将堆顶元素删除,将当前元素加入。 最后堆顶元素就是第k个最大元素。 堆操作: minHeapify(int[] nums, int index, int heapSize) 获取左右子树索引,初始化最小索引为当前元素; 如果左子节点存在且小于当前节点, 2025-03-02 算法笔记 > 堆 #堆
面试经典 150 题-二分查找 LeetCode 面试经典 150 题-二分查找搜索插入位置二分查找1234567891011121314151617class Solution { public int searchInsert(int[] nums, int target) { int n = nums.length; int left = 0, right = n - 2025-02-28 算法笔记 > 二分查找 #二分查找
面试经典 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 算法笔记 > 分治 #分治