自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(911)
  • 资源 (16)
  • 问答 (1)
  • 收藏
  • 关注

原创 Python - “列表乘法”和“列表推导式”区别

列表乘法和列表推导式的区别

2025-03-08 03:02:53 931

原创 LeetCode - 28 找出字符串中第一个匹配项的下标

因为前缀部分(如abc)和后缀部分(如abc)完全相同,而前缀部分(如abc)和中间部分(如d)不相同,因此前缀部分(如abc)和中间部分对齐(如d)时,必然匹配失败。本题如果采用暴力解法的话,可以定义两个指针 i,j,其中 i 指针用于扫描 S(haystack)串,j 指针用于扫描 T(needle)串。注意,判断前缀和后缀是否相同,都是从左往右逐一比对,因此上面例子中,长度为3的前缀"aab"和后缀"baa"是不相同的。"leeto" 没有在 "leetcode" 中出现,所以返回 -1。

2025-03-07 13:13:27 879

原创 LeetCode - 27 移除元素

我们假设 [0, i] 范围内不含值为 val 的元素,然后用 j 遍历 nums 数组的每个元素 nums[j]// 它以不等于 val 的值排序。你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。// 长度正确的预期答案。// 排序 nums 的前 k 个元素。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。

2025-03-06 16:54:26 915

原创 LeetCode - 26 删除有序数组中的重复项

的前五个元素被修改为 0, 1, 2, 3, 4。不需要考虑数组中超出新长度后面的元素。当 j 越界时,此时 [0, i] 范围就是无重复元素的原地数组,长度为 i+1。// 长度正确的期望答案。的前两个元素被修改为 1, 2。不需要考虑数组中超出新长度后面的元素。函数应该返回新的长度 2,并且原数组。函数应该返回新的长度 5,并且原数组。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。

2025-03-04 16:27:10 604

原创 LeetCode - 25 K 个一组翻转链表

首先,我们可以思考下,如何反转(单向)链表(PS. 只能基于原来的节点操作)当我们知道如何反转链表,我们可以继续思考:反转链表“指定范围的节点”是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。本题主要考察数据结构。

2025-03-02 18:34:40 464

原创 LeetCode - 24 两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。对于输入的链表,我们可以为其定义一个虚拟头节点 dummy_head,比如示例1,进行如下逻辑。本题主要考察数据结构。

2025-02-25 17:18:39 342 1

原创 LeetCode - 23 合并 K 个升序链表

若 lists 非空,则以 lists[0] 作为基链表 base,然后从索引 1 开始遍历 lists 的每一个元素 lists[i],依次和 base 合并,这里 lists[i] 和 base 的合并可以套用 leetcode 21逻辑。那么 [0, 4] 范围的链表合并问题,就分解为了求解 [0,2] 范围链表合并、以及 [3,4] 范围链表合并。此时,该范围只有一个链表,因此该范围的合并结果就是 lists[0] 链表。此时,该范围只有一个链表,因此该范围的合并结果就是 lists[1] 链表。

2025-02-24 22:16:41 712

原创 LeetCode - 22 括号生成

此时需要注意的是,由于 n == 3,因此生成结果中最多只有3个左括号,3个右括号,因此下面绿色框分支中已经用完了左括号,下一层只能选择右括号。代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。回溯算法是基于递归进行的,而递归过程,可以模拟为一颗树的生成过程。每一层节点都有两种选择:左括号 "(" 或着 右括号 ")"树的第六层生成,由于合法括号组合必然是以。分支被剪枝 ,因为其必然不合法。结尾,因此最后一层必然是右括号。,则生成结果必然不合法。但是合法的括号组合,

2025-02-23 01:21:36 1020

原创 LeetCode - 21 合并两个有序链表

本题的要求是:需要使用 list1 和 list2 的节点来构成合并后的链表。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2025-02-20 12:07:26 418

原创 LeetCode - 20 有效的括号

最终,当 s 串遍历完所有字符后,stack 为空,则说明所有括号都完成了配对。本题可以利用 “栈” 解题。,判断字符串是否有效。

2025-02-19 18:02:33 546

原创 LeetCode - 19 删除链表的倒数第 N 个结点

fast 先走 n 步,然后 slow、fast 才同时走,则 slow 和 fast 将会一直保持 n 步的差距,那么当 fast 越界时(即 fast == null 时),slow 就处于倒数第 n 个节点。因此,我们想要删除倒数第 n 个节点,则需要找到倒数第 n+1 个节点,按照前面slow、fast指针逻辑,则当fast走到倒数第1个节点时,slow位于倒数第n+1个节点位置。但是本题的链表是单向链表,即当前节点只能通过next找到下一个节点,而无法找到上一个。给你一个链表,删除链表的倒数第。

2025-02-18 22:03:33 1052

原创 LeetCode - 18 四数之和

四数之和:固定四元组中最小两个值的索引 i,j,然后定义双指针 L = j + 1,R = len(nums) - 1,如果此时四元组之和 sum = nums[i] + nums[j] + nums[L] + nums[R]因此当 nums[i] == nums[i-1] 时,我们可以跳过,比如上图 i = 1,j=2 的过程可以跳过,因为产生的必然时重复的四元组。如上图所示,红色框部分,其中 j 的位置相同,L,R的运动过程也相同,只是 i 的位置发生了变化,但是 i 指向的元素值时没有改变的。

2025-02-18 14:23:04 895

原创 LeetCode - 850 矩形面积 II

虽然矩形交集很容易求解,但是想要求出所有交集,则需要让每个矩形和剩余其他矩形尝试比较,得出交集。对于 rectangle[i] = [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐标, (xi1, yi1) 是该矩形 左下角 的坐标, (xi2, yi2) 是该矩形 右上角 的坐标。上面这种思路就是 ”扫描线算法“,扫描线法可以将 "面" 的问题,分解为 "线" 的问题,将 "矩形(面)交集问题" 降解为 "区间(线)交集问题"。从(1,1)到(2,2),绿色矩形和红色矩形重叠。

2024-09-27 00:07:40 2050

原创 LeetCode - 503 下一个更大元素 II

本题相较于 496题 的变化在于,nums 数组是首尾相连的,即 nums[nums.length - 1] 下一个更大元素,可以继续从 nums[0] 开始找。给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素。数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。输入: nums = [1,2,3,4,3]

2024-09-25 15:25:47 758

原创 LeetCode - 496 下一个更大元素 I

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素。- 4 ,用加粗斜体标识,nums2 = [1,3,4,2]。不存在下一个更大元素,所以答案是 -1。- 1 ,用加粗斜体标识,nums2 = [1,3,4,2]。输入:nums1 = [4,1,2], nums2 = [1,3,4,2].输入:nums1 = [2,4], nums2 = [1,2,3,4].

2024-09-25 14:31:36 1061

原创 LeetCode - 17 电话号码的字母组合

因此 "23" 对应的组合有:"ad"、"ae"、"af"、"bd"、"be"、"bf"、"cd"、"ce"、"cf"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]因此,如果我们可以遍历出该树形结构的每一条分支,那么就能求出所有组合。如果画图表示的话,可以发现组合问题的求解过程,可以形成一个树形结构。该树形结构的每一条根到叶子节点的路径都对应一个组合。本题是一个组合问题,可以使用回溯算法解题。输出:["a","b","c"]输入:digits = "2"

2024-09-11 16:32:55 973

原创 LeetCode - 16 最接近的三数之和

本题要求的是最接近taget的三数之和,因此我们在找三元组的过程中,只要保留和target差距最小的三元组之和即可。解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。解释:与 target 最接近的和是 0(0 + 0 + 0 = 0)。输入:nums = [-1,2,1,-4], target = 1。输入:nums = [0,0,0], target = 1。一致,具体逻辑,可以看下这篇博客。中选出三个整数,使它们的和与。假定每组输入只存在恰好一个解。

2024-09-10 14:39:48 695

原创 LeetCode - 15 三数之和

因此当 nums[i] == nums[i-1] 时,我们就可以跳过 nums[i] 产生三元组的过程,因为必然和 nums[i-1] 产生的三元组发生重复。我们返回的结果是一个 int** 类型的,主要记录不重复的三元组,比如 [[-1,-1,2], [-1,0,1]],可以发现返回值本质是一个二维数组。比如对于返回值 [[-1,-1,2], [-1,0,1]] 来说,returnSize = 2,returnColumnSizes = [3, 3]输出:[[-1,-1,2],[-1,0,1]]

2024-09-09 20:30:56 1315

原创 LeetCode - 14 最长公共前缀

我们可以假设最长公共前缀 prefix = strs[0],然后遍历其余 strs[i] 和 prefix 取最长公共前缀后,更新 prefix。输入:strs = ["flower","flow","flight"]输入:strs = ["dog","racecar","car"]编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。解释:输入不存在公共前缀。

2024-09-01 18:38:26 475

原创 LeetCode - 13 罗马数字转整数

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。例如, 罗马数字 2 写做 II ,即为两个并列的 1。解释: M = 1000, CM = 900, XC = 90, IV = 4.罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。输入: s = "MCMXCIV"情况1,每个罗马数字都是独立的。输入: s = "LVIII"输入: s = "III"输入: s = "IV"输入: s = "IX"

2024-09-01 17:56:00 868

原创 LeetCode - 12 整数转罗马数字

罗马数字是通过添加从最高到最低的小数位值的转换而形成的。3000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)700 = DCC 由于 500 (D) + 100 (C) + 100 (C)首先,我们需要配置: 阿拉伯数字 和 罗马数字 的映射表。注意:49 不是 50 (L) 减 1 (I) 因为转换是基于小数位。40 = XL 由于 50 (L) 减 10 (X)9 = IX 由于 10 (X) 减 1 (I)这里我的策略是定义两个数组:nums 和 romans。

2024-09-01 13:41:25 1042

原创 LeetCode - 11 盛最多水的容器

也就是说 h[R1] * (R1 - L1 + 1) 的结果是肯定大于 h[L] * (R - L + 1) 的,因此这里 L 虽然没有匹配到最优高柱 R1,但是 R1 作为矮柱时的容器肯定比当前 R1 作为高柱时的容器盛水更多。容器内水的容量大小 V,取决于容器两端中的较短柱子h_min,因此为了使得容器内水尽可能的多,我们应该找到距离 h_min 柱子最远的,且高度>= h_min 的另一个柱子。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。输入:height = [1,1]

2024-09-01 12:42:28 1309

原创 LeetCode - 10 正则表达式匹配

所谓动态规划,即递推,从简单易解的小问题的结果,逐步递推出,复杂难解的大问题的结果。

2024-09-01 00:38:11 1912 4

原创 LeetCode - 9 回文数

回文数的特点是正序和倒序都一样,比如整数 121 的倒序也是 121,因此 121 是回文数。给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。回文数 是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释:从右向左读, 为 01。例如,121 是回文,而 123 不是。注意:按照题目要求,本题负数都不是回文数。输入:x = -121。输入:x = 121。

2024-08-30 22:58:17 25713

原创 LeetCode - 8 字符串转换整数 (atoi)

第 2 步:"1337c0d3"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:"0-1" (当前没有读入字符,因为这里不存在 '-' 或者 '+')第 3 步:"0-1" (读入 "0";第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:" -042"(读入 '-' 字符,所以结果应该是负数)第 3 步:" -042"(读入 "042",在结果中忽略前导零)第 1 步:"0-1" (当前没有读入字符,因为没有前导空格)

2024-08-30 13:46:30 1484

原创 LeetCode - 7 整数反转

需要注意的是,本题的 x 虽然取值范围限制在了 int 范围内,但是 x 反转后的数值是可能超出 int 范围的,但是不会超出 long 范围,因此反转后的数 res 我们应该使用 long 来记录。但是需要注意的是:(1 << 31) 的结果居然是负数?比如我们表示 2^31 - 1,可能会使用 pow(2, 31) - 1,或者 (1 << 31) - 1。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。还有一点,本题暴露了python的一个问题,那就是 python 的。

2024-08-30 00:36:27 807

原创 LeetCode - 6 Z 字形变换

本题,我们可以定义一个长度 numRows 的字符串数组,对应于结果排列的各行。之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。无论直边的填充,还是斜边的填充,填充顺序都是固定的,即字符串 s 的遍历顺序。输入:s = "PAYPALISHIRING", numRows = 3。输入:s = "PAYPALISHIRING", numRows = 4。输入:s = "A", numRows = 1。输出:"PAHNAPLSIIGYIR"

2024-08-29 23:01:06 1224

原创 LeetCode - 5 最长回文子串

基于最简回文子串,我们向其两端扩展,比如最简回文子串的范围是 s[i],那么可以定义 L = i , R = i,只要 s[L] == s[R],则回文子串扩展成功,新的回文子串范围是 s[L, R],然后按此逻辑继续扩展 L--,R++,直到发现 s[L]!同理,比如最简回文子串时 s[i, i+1],那么可以定义 L = i ,R = i + 1,只要 s[L] == s[R],则回文子串扩展成功,新的回文子串范围是 s[L, R],然后按此逻辑继续扩展 L--,R++,直到发现 s[L]!

2024-08-29 19:37:03 661

原创 LeetCode - 4 寻找两个正序数组的中位数

题目来源4. 寻找两个正序数组的中位数 - 力扣(LeetCode)题目描述给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2输入:nums1 = [1,2], nums2 = [3,4]

2024-08-29 19:35:47 882

原创 LeetCode - 3 无重复字符的最长子串

为什么是128长度的数组呢?即定义两个指针 L,R,初始时 L,R 都初始化为0,表示 s 串的 [L, R)区间为一个滑动窗口。这里我们可以定义一个128长度的数组index,或者一个哈希表来记录 R 指针扫描过的字符及其出现的索引位置。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

2024-08-29 19:34:59 1234

原创 LeetCode - 2 两数相加

给你两个 非空 的链表,表示两个非负的整数。为了代码简单,我们可以总是保证 l1 是较长链表(如果 l1 是较短的,则互换 l1 和 l2)。首先:判断出 l1 和 l2 两个链表哪个长,我们以较长的链表作为基础,即将较短的链表。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输入:l1 = [2,4,3], l2 = [5,6,4]输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]较长的链表中,避免创建新链表。输出:[7,0,8]

2024-08-29 19:33:41 1221

原创 LeetCode - 1 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。你可以按任意顺序返回答案。

2024-08-29 19:32:47 1394

原创 个人澄清公告

自专栏创建以来,本人一直致力于优化专栏内容,并提供算法答疑服务(解答考友的刷题问题),因此专栏在优快云取得了不错的销量。本人在优快云平台维护了一个关于算法刷题笔记的付费专栏。当然,对于别人的举报,我也不会当作空穴来风。

2024-08-24 04:42:18 3748

原创 交易逆序对的总数

已支持(Java & JS & Python & C & C++)

2024-08-14 17:37:51 1391

原创 算法设计 - 归并排序(Java & JS & Python & C & C++)

算法设计 - 归并排序(Java & JS & Python & C & C++)

2024-08-14 16:41:20 1204

原创 合并两个有序数组

已支持(Java & JS & Python & C & C++)

2024-08-14 14:25:11 1036

原创 最佳升级时间窗

(Java & JS & Python & C & C++),实现:滑动窗口

2024-08-07 02:08:21 948

原创 电影查询系统

已支持(Java & JS & Python & C & C++),实现:逻辑模拟

2024-08-06 03:41:16 581

原创 【问卷调查】

已支持(Java & JS & Python & C & C++),实现:多条件排序

2024-08-06 03:11:28 442

原创 数据完整性检查

已支持(Java & JS & Python & C & C++),实现:递归

2024-07-26 01:24:34 870

大事件项目源码,大事件项目源码

大事件项目源码

2023-07-14

基于grid布局实现的响应式栅格系统

基于grid布局实现的响应式栅格系统

2022-09-10

响应式网页布局-仿三星官网首页

响应式网页布局-仿三星官网首页

2022-09-01

JS事件监听触发响应式布局

JS事件监听触发响应式布局

2022-08-31

仿京东移动端首页布局(固定尺寸、rem适配、vw适配)

仿京东移动端首页布局,包括固定尺寸布局、rem适配布局、vw适配布局,设计稿尺寸使用的iPhoneXR的414px * 896px。 我们可以通过在不同移动端设备上展示移动端网页,发现固定尺寸布局的不足之处,以及rem适配、vw适配的原理。 其中vw适配的网页css使用的是scss语法,使用了函数、变量、嵌套等语法。

2022-08-23

基于Vuex的TodoList和Count计数器整合案例

基于Vuex的TodoList和Count计数器整合案例

2022-06-11

基于acess_token和refresh_token实现token续签

基于acess_token和refresh_token实现token续签

2022-03-19

nodejs平台基于jsonwebtoken的登录认证

nodejs平台基于jsonwebtoken的登录认证

2022-03-18

session存储到数据库实践

session存储到数据库实践

2022-03-15

实现session身份认证机制

实现session身份认证机制

2022-03-14

cookie身份认证小案例

cookie身份认证小案例

2022-03-09

控制台打印红黑树.rar

控制台打印红黑树

2021-05-17

多态思维导图.xmind

多态思维导图.xmind

2021-03-15

包装类思维导图.xmind

包装类思维导图.xmind

2021-03-15

static关键字思维导图.xmind

static关键字

2021-03-15

final关键字思维导图.xmind

final关键字

2021-03-13

抽象类思维导图.xmind

Java,JavaSe,抽象类,思维导图

2021-03-12

接口思维导图.xmind

Javase,接口,思维导图

2021-03-11

枚举类思维导图.xmind

Javase,枚举类,思维导图

2021-03-11

内部类思维导图.xmind

javase,内部类,思维导图

2021-03-11

Lambda表达式.xmind

JavaSE,jdk8新特性,Lambda表达式思维导图

2021-03-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除