算法练习
题目主要来源于leetcode,记录解题过程,尽量以更加易懂的言语表达,更生动的图形让数据更有画面感,不追求高大上,只求通俗易懂。
Java记事本
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法笔记】力扣热题100(LeetCode hot-100)53. 最大子数组和 1.前缀和 2.动态规划
力扣热题100题 leetcode 53.最大子数组和。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组,返回其最大和。1:使用前缀和的方法。2:使用动态规划原创 2025-01-22 17:25:15 · 715 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100)560. 和为 K 的子数组
力扣 hot-100 560. 和为 K 的子数组。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。使用 前缀和 和 哈希表 的方法。原创 2025-01-21 22:02:40 · 583 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100)438. 找到字符串中所有字母异位词 滑动窗口
给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串。使用滑动窗口解决问题。滑动窗口就是指定一个大小作为窗口,然后在字符串上滑动这个窗口,找到符合条件的子串。异位词换句话说就是:两个字符串的字符相同,但排列顺序不一定相同的字符串。原创 2025-01-21 16:55:13 · 510 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100)3. 无重复字符的最长子串
其实从题目字面意思就不难理解,就是求一个字符串中不含有重复字符的最长子串的长度。这里我们可以使用滑动窗口(SlidingWindow)的方法来解决这个问题。原创 2025-01-20 15:15:40 · 343 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100)42. 接雨水 2d
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。我们需要计算每个位置左右两边的最大值,然后取两边最大值中的最小值,这个就是木桶的高度。但是要知道木桶的拖底也是有高度的,所以当木桶的高度大于拖底的高度时,才能存水。其实我们可以看成是一个木桶,木桶的高度由最短的那块木板决定。我们需要计算在每个柱子之间可以接多少雨水,然后求和。原创 2025-01-13 16:49:24 · 365 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100) 15: 三数之和
力扣热题100 15: 三数之和 判断是否存在三元组 通俗的说,就是找出数组中所有的三个数,使得这三个数的和为0,找出所有的组合。遍历数组,对于每个元素,双指针求剩余元素中寻找两个数,使得三数之和为 0;3.1 外层循环遍历时,如果当前元素与上一个元素相同。(向前对比重复元素)3.2 内层获得结果后,往后移动指针,跳过重复元素。(向后对比重复元素)。使用排序和双指针法来解决这个问题。注意跳过重复元素,避免重复结果。原创 2025-01-13 16:06:54 · 475 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100) 11: 盛最多水的容器
找出两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。大白话就是,找出两条线,以矮的那条线为高,两条线之间的距离为底,求出最大的面积。我们可以使用双指针法来解决这个问题。初始化两个指针,分别指向数组的两端。计算当前容器的容量,并记录最大值。然后移动较短的那条线的指针,直到两个指针相遇。原创 2025-01-12 21:49:21 · 402 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100) 283: 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾。使用双指针法来解决这个问题。一个指针 fast 用于遍历数组,另一个指针 slow 于记录非零元素的位置。当 fast 指针遇到非零元素时,将其与 slow 指针位置的元素交换,并将 slow 指针向前移动。根据题目描述,我们需要将数组中的所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。输入:我有一个数组 [0,1,0,3,12]。原创 2025-01-12 21:41:30 · 294 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100) 128: 最长连续序列
给定一个未排序的整数数组 nums,找出数字连续的最长序列。首先将所有数字存入哈希表中,然后遍历哈希表中的每个数字,检查其是否为一个序列的起点(即该数字减一不在哈希表中)。如果是序列的起点,则继续检查该数字加一是否在哈希表中,直到不在为止。记录下最长的序列长度。输入:我有一个数组 [100, 4, 200, 1, 3, 2]。根据题目描述,我们需要找出数字连续的最长序列的长度。原创 2025-01-12 21:31:23 · 474 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100) 49: 字母异位词分组
字母组合问题,一般可以通过对字符串排序来解决。排序后的字符串作为哈希表的key,原始字符串作为value。遍历数组,将每个字符串排序后作为key存入哈希表,原始字符串作为value存入对应的列表中。输入:我有一个数组[“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]。根据题目描述,我们需要将字母异位词组合在一起。换句话说,就是将由相同字母组成的字符串分到同一个组里。原创 2025-01-10 16:17:42 · 230 阅读 · 0 评论 -
【算法笔记】力扣热题100(LeetCode hot-100) 1:两数之和
根据题目描述,求两个数的和等于目标值的下标。再转换成大白话就是,一堆数中找出两个数A和B,使得A+B=target。哈希表的key是数值,value是下标。遍历数组,如果 (target-当前数值) 在哈希表中,那么找到了答案。输入:我有一个数组[2,7,11,15],目标值是9。原创 2025-01-10 16:16:49 · 376 阅读 · 0 评论
分享