- 博客(32)
- 收藏
- 关注
原创 力扣笔记 ——【字符串 双指针倒序插入】151.翻转字符串里的单词
注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。考虑到反转,可以想到倒着遍历,每扫描完一个单词就追加进res里,指针i扫描空格跳过直至下一个(非空格的)单词。解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。解释:反转后的字符串中不能存在前导空格和尾随空格。输入:s = "a good example"输入:s = "the sky is blue"
2024-07-25 17:04:35
353
原创 卡码笔记 ——【字符串 倒序填充】54. 替换数字⛔
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。打印一个新的字符串,其中每个数字字符都被替换为了number。输入一个字符串 s,s 仅包含小写字母和数字字符。思路大致明白了,但写法好陌生🥲。
2024-07-25 15:25:41
383
原创 力扣笔记 ——【字符串 】541. 反转字符串II⛔
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。如果剩余字符少于 k 个,则将剩余字符全部反转。输入:s = "abcdefg", k = 2。输入:s = "abcd", k = 2。输出:"bacdfeg"
2024-07-25 15:13:30
297
原创 力扣笔记 ——【字符串 双指针】344. 反转字符串
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。输入:s = ["H","a","n","n","a","h"]输入:s = ["h","e","l","l","o"]输出:["h","a","n","n","a","H"]输出:["o","l","l","e","h"]
2024-07-25 13:47:43
249
原创 力扣笔记 ——【哈希 】18. 四数之和⛔
题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]答案中不可以包含重复的四元组。
2024-07-23 18:09:22
272
原创 力扣笔记 ——【哈希 】15. 三数之和⛔
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]
2024-07-23 18:07:24
229
原创 力扣笔记 ——【哈希 哈希映射数组】383. 赎金信
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。输入:ransomNote = "aa", magazine = "aab"输入:ransomNote = "aa", magazine = "ab"magazine 中的每个字符只能在 ransomNote 中使用一次。输入:ransomNote = "a", magazine = "b"否则返回 false。多多复习这样的写法,真是太优雅了!
2024-07-23 18:00:55
172
原创 力扣笔记 ——【哈希 】454. 四数相加 II⛔
为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。暂未理解cd前面为什么是负号,有人说是预期AB和,但还是感觉缺步骤。
2024-07-23 17:31:49
212
原创 力扣笔记 ——【哈希 map】1. 两数之和
(a+b=target时)判断某个元素是否出现过,如果出现过,返回这个元素的下标。那么判断元素是否出现,这个元素就要作为key,所以数组中的元素作为key,有key对应的就是value,value用来存下标。在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
2024-07-22 20:12:44
196
原创 力扣笔记 ——【哈希 set应用】202. 快乐数⛔
快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True;不是,则返回 False。编写一个算法来判断一个数 n 是不是快乐数。
2024-07-22 19:22:31
232
原创 力扣笔记 ——【哈希 set集合】349. 两个数组的交集
输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序。使用数组来做哈希的题目,是因为题目都限制了数值的大小。而且如果哈希值比较少、特别分散、跨度非常大,使用数组就造成空间的极大浪费。但不能统统无脑使用set,因为不仅占用空间比数组大,而且速度要比数组慢,set把数值映射到key上都要做hash计算的。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。题意:给定两个数组,编写一个函数来计算它们的交集。
2024-07-22 18:22:26
179
原创 力扣笔记 ——【哈希 信号量的思想】242. 有效的字母异位词
完最后检查一下,record数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false。到数组也就是哈希表的索引下标上,因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true。示例 2: 输入: s = "rat", t = "car" 输出: false。说明: 你可以假设字符串只包含小写字母。
2024-07-22 14:51:46
192
原创 力扣笔记 ——【链表 快慢指针后同步指针】142. 环形链表 II
手动推演一下快慢首次相交的节点,节点到入口的距离和链首到入口的距离是相等的。因此,先让循环判断是否存在环,无则直接返回null;有则抓取快慢指针相等的情况,再同速同步走到相交为止,相交的节点既入口。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。题意: 给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。说明:不允许修改给定的链表。
2024-07-20 17:53:35
235
原创 力扣笔记 ——【链表 同步的指针】160.链表相交
理解出两条链都走,先走哪一条总长相同,所以如共有交点,则必定会碰面。双指针这次是利用了位差找到特定节点(位置),只不过位差为0,同步也。给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。注意,函数返回结果后,链表必须 保持其原始结构。题目数据 保证 整个链式结构中不存在环。
2024-07-20 16:31:56
426
原创 力扣笔记 ——【链表 虚拟节点与快慢指针】19. 删除链表的倒数第 N 个结点
输入:head = [1,2,3,4,5], n = 2。似乎有个循环链表找出口的题也是这种思路,快慢指针找到。输入:head = [1,2], n = 1。输入:head = [1], n = 1。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。输出:[1,2,3,5]
2024-07-20 15:34:44
223
原创 力扣笔记 ——【链表 虚拟头节点模拟行为】24. 两两交换链表中的节点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。从头开始,所以用虚拟头节点更好。链表的模拟行为要多注意。输入:head = [1,2,3,4]输入:head = [1]输出:[2,1,4,3]输入:head = []
2024-07-20 15:02:12
277
原创 力扣笔记 ——【链表 三指针末影眼】206. 反转链表
cur的后继翻转来实现反转,pre再跟进cur为下一次cur的后继反转做准备,cur最后跳到temp之前保存的下个节点。输入:head = [1,2,3,4,5]用temp保存cur下一跳的节点以cur。,请你反转链表,并返回反转后的链表。输出:[5,4,3,2,1]题意:给你单链表的头节点。
2024-07-19 14:53:12
227
原创 力扣笔记 ——【链表 虚拟头节点】203. 移除链表元素
示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]示例 2: 输入:head = [], val = 1 输出:[]题意:删除链表中等于给定值 val 的所有节点。
2024-07-19 14:00:10
208
原创 力扣笔记 ——【数组 模拟行为】59.螺旋矩阵II
当n=3时,遍历一圈+一点;当n=4时候,遍历两圈;当n=2时,遍历一圈。易得出以2取余的圈数,3%2=1(圈)1(点);5%2=2(圈)1(点);因此,可以定义一个loop变量。的方式遍历填入从1自增到n的值,最中间的值当n取奇数时可以直接填入而不用再走一次循环。那么,简单举例推一下n取奇数和偶数时,分别要遍历几圈(一趟四边为一圈)?看作四条边加一个中心点就好办了,边取左闭右开,四条边分别以。所有元素,且元素按顺时针顺序螺旋排列的。循环,整个循环结束之后加个if补一下中间的。
2024-07-18 20:41:20
249
原创 力扣笔记 ——【数组 滑动窗口】209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。滑动窗口思想/方法,两个指针内为窗口,窗口里值不够则靠。数组 滑动窗口 O(n)
2024-07-18 15:35:54
337
原创 力扣笔记 ——【数组 端指针】977.有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。用双端指针收缩遍历,每次判断,再创建一个新数组和新指针按顺序填入即可。
2024-07-18 14:39:38
269
原创 力扣笔记 ——【数组 快慢指针】27. 移除元素
你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。的,所以删除某个萝卜并不能让后面的萝卜自动跳出来排好队再插入坑内的,这种情况暴力法的话就相当于是删掉nums[i] == val,再把后面的值前移。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
2024-07-17 17:13:56
299
原创 力扣笔记 ——【数组 端指针】704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。复的有序数组】是题眼。
2024-07-17 15:41:18
137
原创 苍穹外卖笔记【修改菜品 查询回显+删除重插 u=r+dc】
Xml3:dishFlavorMapper.deleteByDishId(dishDTO.getId()) 先删除口味部分。Xml4:dishFlavorMapper.insertBatch(flavors) 再插入口味部分。Xml1:dishFlavorMapper.getByDishId(id) 查询回显。Xml2:dishMapper.update(dish) 修改菜品部分。
2024-04-16 22:36:31
353
1
原创 苍穹外卖笔记【新增菜品 内包含口味集合(列表) 用了两个动态SQL映射】
【代码】苍穹外卖笔记【新增菜品 内包含口味集合(列表) 用了两个动态SQL映射】
2024-04-14 22:14:45
361
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅