自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 18.四数之和

和三数之和的思路相似,只是在三数之和的基础上,增加了外层的 j 指针,形成了四重循环。请你找出并返回满足下述全部条件且。

2025-12-09 09:41:34 234

原创 15.三数之和

3.剪枝:如果 nums[i] > 0,可以提前结束。因为数组已排序,后面全部是正数,不可能再出现和为 0 的三元组。排序后,固定一个数,用双指针从两端逼近寻找另外两个数,利用排序特性进行剪枝和去重,最终得出不重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。目标:从数组中找出所有和为 0 的三元组,且不能重复。4.去重:跳过和前一个一样的数,避免生成重复三元组。循环遍历每一个数,把它当成三元组的第一个数。注意,输出的顺序和三元组的顺序并不重要。唯一可能的三元组和为 0。

2025-12-09 09:27:12 294

原创 1.两数之和

如果提前把当前数写进哈希表,就会产生一种情况:当前数字把自己用于匹配,错误地重复使用同一个数字两次。3.如果 num2 已经在哈希表里,说明之前遇到过一个数可以和当前数凑成目标值,直接返回两个下标。否则,将当前数字和其下标存入哈希表,继续遍历。2.遍历数组时,对于当前数字 num1,计算它需要的“另一半” num2 = target - num1。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

2025-12-02 10:12:22 193

原创 344.反转字符串

初始化两个指针分别指向字符串的头和尾,然后交换这两个位置的字符,并逐步移动指针直到到达字符串的中间,从而实现字符串的反转操作。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。

2025-11-27 18:38:25 126

原创 242.有效的字母异位词

ord('b') - ord('a') = 1,所以 hash_array[1] -= 1,表示字母 'b' 出现了一次,现在减少 1。ord('a') - ord('a') = 0,所以 hash_array[0] -= 1,表示字母 'a' 出现了一次,现在减少 1。ord('a') - ord('a') = 0,所以 hash_array[0] += 1,表示字母 'a' 出现了 1 次。hash_array = [0, 0, 0, 0, 0, 0, ..., 0] # 所有的值都恢复为 0。

2025-11-25 15:44:49 368

原创 142. 环形链表 II

找到相遇点后,把一个指针放回头部,两个指针都改为每次走一步。当它们再次相遇时,相遇的位置就是环的入口。快指针每次走两步,慢指针每次走一步,如果它们相遇了就说明有环。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。如果链表无环,则返回。,则在该链表中没有环。

2025-11-21 23:52:01 329

原创 19.删除链表的倒数第N个节点 - 力扣

最终通过slow.next = slow.next.next完成删除操作,返回dummy.next。区别在于fast先走的步数和循环结束条件不同,但都能找到要删除节点的前一个位置。第二种方法让fast指针先走n步,然后fast和slow同时前进直到fast.next为None,此时slow同样指向要删除节点的前一个节点。第一种方法让fast指针先走n+1步,然后fast和slow同时前进直到fast为None,此时slow指向要删除节点的前一个节点。使用双指针技巧来删除链表的倒数第n个节点。

2025-11-20 19:48:40 337

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

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。创建一个虚拟头节点 dummy 放在链表开头,这样能统一处理头节点的交换。用 current 指针指向要交换的两个节点的前一个位置。最后 current 移动两位,准备下一轮交换。让第一个节点指向 temp2(即后续链表)把第二个节点后面的部分记作 temp2。让 current 指向第二个节点。把第一个节点记作 temp1。让第二个节点指向第一个节点。

2025-11-19 18:23:06 306

原创 206.反转链表

用三个指针边遍历边反转。pre指向已反转部分的头,current指向未反转部分的头,temp临时保存下一个节点。每次循环把current节点拆下来接到pre前面,然后各指针向前移动。当current走到None时,pre就是新链表的头。,请你反转链表,并返回反转后的链表。

2025-11-19 18:14:13 113

原创 707.设计链表

/ 链表变为 1->2->3。// 现在,链表变为 1->3。以指示链表中的上一个节点。假设链表中的所有节点下标从。你可以选择使用单链表或者双链表,设计并实现自己的链表。1.使用虚拟头节点,统一处理头节点的插入和删除操作。是指向下一个节点的指针/引用。如果是双向链表,则还需要属性。

2025-11-13 19:53:13 238

原创 203.移除链表元素

1.虚拟头节点,统一单链表各节点的移除操作。3.返回真正的头节点 dummy.next。2.用current指针移动链表。,请你删除链表中所有满足。给你一个链表的头节点。

2025-11-11 18:34:09 133

原创 209.长度最小的子数组

找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]给定一个含有 n 个正整数的数组和一个正整数 target。输入:target = 4, nums = [1,4,4]解释:子数组 [4,3] 是该条件下的长度最小的子数组。

2025-11-10 18:27:11 199

原创 查找算法-二分查找法

【代码】查找算法-二分查找法。

2025-11-09 12:09:33 199

原创 977.有序数组的平方

2.由于原数组已按非递减顺序排序,但包含负数,平方后最大值可能出现在数组两端。使用左右指针从数组两端向中间遍历,比较平方值,将较大的平方值从结果数组的末尾开始填充。4.i <= j 确保处理所有元素,包括当左右指针相遇时的最后一个元素。3.初始化左指针 i=0,右指针 j=len(nums)-1。比较 nums[i] 和 nums[j] 的平方值。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]组成的新数组,要求也按。移动相应的指针和填充指针。

2025-11-08 18:29:25 209

原创 59.螺旋矩阵||

5*5矩阵,5//2=2,需要转2圈,5%2=1,余一个中心点坐标为(5//2=1,5//2=1)。flag表示当前正在填充的层数(从外到内):flag = 0填充最外层,flag = 1填充第二层。以此类推...每完成一层螺旋填充,flag 就加1,进入下一内层。右边界: 第4列 (n-flag-1=5-0-1=4)下边界: 第4行 (n-flag-1=5-0-1=4)此时flag=1,i和j=1,count=16。左闭右开,j < 5-1-1=3。左边界: 第0列 (flag=0)

2025-11-07 15:22:00 437

原创 27.移除元素

慢指针则依次顺序移动,指向新数组中存放元素的位置,每次得到有效元素后都会向前移动一步,返回值是新数组的长度,即有效元素的个数,指向的是新数组末尾的下一个位置,所以原数组大小的不变。开始时两指针均指向原数组的0索引值,如果快指针小于原数组长度,则移动寻找除了要移除元素以外的有效元素。解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。输出:5, nums = [0,1,4,0,3,_,_,_]

2025-11-06 09:18:22 249

原创 704.二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果 target 存在返回下标,否则返回 -1。1.采用左闭右闭的区间:左指针小于等于右指针的值;进入单指针移动时,指针等于middle + 1或middle - 1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。解释: 2 不存在 nums 中因此返回 -1。

2025-11-05 10:20:12 148

原创 查找算法-顺序查找

1.查找算法:从n个元素中查找x值是否存在。4.2在列表中顺序查找最大值和最小值。2.顺序查找:重头到尾逐个查找。4.1在列表中顺序查找特定值x。(2)比较n次未找到。

2025-10-22 21:58:01 337

原创 算法简单概述

2.算法结构:输入数据→算法处理→输出结果。1.算法:解决问题的一种方法或过程。3.算法性能分析:时间、空间。

2025-10-22 20:57:51 115

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

"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。

2025-10-09 19:38:23 225

原创 27.移除元素

你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。元素的顺序可能发生改变。的元素数量,且这些元素都位于数组的前。的元素应该放置的位置;注意这五个元素可以任意顺序返回。1.使用双指针技巧,一个指针。中的前两个元素均为 2。

2025-10-01 10:11:24 424

原创 CentOS 7 网络连接问题

CentOS昨天还能上网,今天突然就不行了,ping 百度都 ping 不通ip addr从 ip addr 的输出结果可以看到,主要网络接口 ens33DOWN。

2025-10-01 09:15:34 424

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

/ 长度正确的期望答案。被忽略,不需要考虑数组中超出新长度后面的元素,相当于"删除"了重复元素。指针:指向当前唯一序列的末尾位置,记录唯一元素应该存放的位置。函数应该返回新的长度 2 ,并且原数组。不需要考虑数组中超出新长度后面的元素。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。个元素(前2个),虽然数组还是。,但根据约定,我们只看前2个元素。由于数组已排序,重复元素必然相邻。的前两个元素被修改为。

2025-09-23 10:08:48 360

原创 k个一组翻转链表

循环2: curr=3→4→5, count=2 (count=2,不满足count<2,停止)head: 1 → null (原来的头节点现在是反转组的尾节点)循环1: curr=2→3→4→5, count=1 (count<2,继续)prev: 2 → 1 → null (反转后的前2个节点)初始: curr=1→2→3→4→5, count=0。节点1 → 节点2 → 节点3 → null。链表: 1→2→3→4→5, k=2。:反转后新链表的头节点。

2025-09-22 20:43:31 289

原创 力扣-两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。prev:始终指向当前要交换的"节点对"的前一个节点。→ 虚拟头节点dummy指向节点2(新的头部)→ 节点1指向节点3(跳过节点2)移动到刚交换完的对的最后一个节点。→ 节点2反转指向节点1。

2025-09-14 08:43:33 344

原创 python几个实例

算经》一书中提出的数学问题:公鸡5元一只,母鸡3元一只,小鸡1元三只,用100块钱买一百只鸡,问公鸡、母鸡、小鸡各有多少只?水仙花数是一个3位数,该数字每个位上数字的立方之和正好等于它本身,例如:1^3 + 5^3+ 3^3=153。生成 0 到 19(包含),同理。

2025-08-21 12:05:08 146

原创 合并K个升序链表-力扣

请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。

2025-07-28 04:55:43 193

原创 力扣-括号生成

代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。深度优先搜索(DFS)的回溯算法。

2025-07-27 04:25:32 214

原创 合并两个有序链表

新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2025-06-17 20:33:49 191

原创 有效的括号

在该问题中,用来快速判断当前字符是否是右括号。:左括号必须以正确的顺序闭合。:也就是说,每一个左括号必须有一个相同类型的右括号与之匹配。,检查栈是否为空:如果栈为空,说明所有括号都正确匹配,返回。需要将被弹出的元素(左括号)暂存起来,用于后续的匹配检查。,检查栈顶是否匹配。如果匹配,弹出栈顶元素。快速查找对应的左括号,检查是否与栈顶匹配。,如果是则弹出相应的值,即弹出栈顶的左括号。:这意味着不能有多余的右括号。,能够反映待匹配的括号类型。是无效的,因为 “ )”在。之前出现,顺序不对。使右括号对应左括号。

2025-06-15 21:39:02 307

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

给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2025-06-14 21:41:35 288

原创 四数之和-力扣

请你找出并返回满足下述全部条件且。

2025-06-13 22:37:27 568

原创 电话号码的字母组合

给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。[]['2', '9']JavaScript 的函数执行机制函数会一直执行到遇见return或执行完所有语句没有return的函数默认返回undefined在递归中,不恰当的继续执行会导致调用栈堆积。

2025-06-12 22:12:50 494

原创 最接近的三数之和

与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。与 target 最接近的和是 0(0 + 0 + 0 = 0)。对于nums.sort((a, b) => a - b);是负数,表示 a 应该排在 b 前面(升序)是正数,表示 b 应该排在 a 前面。中选出三个整数,使它们的和与。假定每组输入只存在恰好一个解。如果是 0,表示两者相等。

2025-06-11 22:55:36 304

原创 三数之和-力扣

不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。

2025-06-11 22:43:17 446

原创 最长公共前缀

/ "ell"(索引1到3)是字符串对象的一个方法,用于提取字符串中介于两个指定下标之间的字符,编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。在 JavaScript 中,输入不存在公共前缀。

2025-06-10 22:03:22 286

原创 罗马数字转整数

数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做。当较小数字在较大数字左边时(如IV、IX等),应该用。当较小数字在较大数字右边时(如VI、XI等),应该。给定一个罗马数字,将其转换成整数。,即为两个并列的 1。

2025-06-09 22:48:39 1093

原创 整数转罗马数字

罗马数字是通过添加从最高到最低的小数位值的转换而形成的。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)给定一个整数,将其转换为罗马数字。

2025-06-09 22:31:49 308

原创 盛最多水的容器

选择第2条线(height[1] = 8)和第9条线(height[8] = 7)。容器的宽度是 8 - 1 = 7,高度是 min(8, 7) = 7,所以面积是 7 * 7 = 49。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。容器的宽度是两个线段的 x 坐标之差,容器的高度是两个线段中较短的那个。输入:[1,8,6,2,5,4,8,3,7]轴共同构成的容器可以容纳最多的水。容器的储水量就是宽度乘以高度。

2025-06-08 21:01:08 402

原创 正则表达式匹配

因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。".*" 表示可匹配零个或多个('*')任意字符('.')。2. 提供两种选择:跳过(0次) 或 重复(1+次)。"a" 无法匹配 "aa" 整个字符串。的,而不是部分字符串。,请你来实现一个支持。

2025-06-08 20:18:16 451

空空如也

空空如也

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

TA关注的人

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