
代码随想录
文章平均质量分 86
代码随想录刷题
cookie265
这个作者很懒,什么都没留下…
展开
-
代码随想录--栈与队列--删除字符串中的所有相邻重复项
给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。原创 2024-10-08 14:38:16 · 1082 阅读 · 0 评论 -
代码随想录--栈与队列--有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。原创 2024-10-08 10:04:29 · 805 阅读 · 0 评论 -
代码随想录--栈与队列--用队列实现栈
如下面动画所示,用两个队列que1和que2实现队列的功能,que2其实完全就是一个备份的作用,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后出的顺序。队列模拟栈,其实一个队列就够了,那么我们先说一说两个队列来实现栈的思路。原创 2024-10-07 22:35:13 · 604 阅读 · 0 评论 -
代码随想录--栈与队列--用栈实现队列
队列是先进先出,栈是先进后出。原创 2024-10-07 22:18:49 · 502 阅读 · 0 评论 -
代码随想录--字符串--重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。原创 2024-10-07 20:46:30 · 1304 阅读 · 0 评论 -
代码随想录--字符串--实现 strStr()
说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP写过KMP的同学,一定都写过next数组,那么这个next数组究竟是个啥呢?next数组就是一个前缀表(prefix table)。前缀表有什么作用呢?前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。原创 2024-10-07 15:40:02 · 854 阅读 · 0 评论 -
代码随想录--字符串--右旋字符串
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。输入:输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。输出:输出共一行,为进行了右旋转操作后的字符串。样例输入:2abcdefg样例输出:fgabcde。原创 2024-10-07 11:54:39 · 979 阅读 · 0 评论 -
代码随想录--字符串--翻转字符串里的单词
给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world!输出: “world!hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good example”输出: “example good a”解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。原创 2024-06-29 16:35:39 · 727 阅读 · 0 评论 -
代码随想录--字符串--替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。对于输入字符串 “a5b”,函数应该将其转换为 “anumberb”输入:一个字符串 s,s 仅包含小写字母和数字字符。输出:打印一个新的字符串,其中每个数字字符都被替换为了number样例输入:a1b2c3样例输出:anumberbnumbercnumber。原创 2024-06-29 16:11:25 · 936 阅读 · 0 评论 -
代码随想录--字符串--反转字符串II
给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。示例:输入: s = “abcdefg”, k = 2输出: “bacdfeg”原创 2024-06-29 11:17:14 · 1071 阅读 · 0 评论 -
代码随想录--字符串--反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]原创 2024-06-29 10:05:53 · 478 阅读 · 0 评论 -
代码随想录--哈希表--四数之和
题意:给定一个包含 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-06-28 22:27:53 · 436 阅读 · 0 评论 -
代码随想录--哈希表--三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?请你找出所有满足条件且不重复的三元组。注意: 答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]原创 2024-06-28 22:16:36 · 839 阅读 · 0 评论 -
代码随想录--哈希表--赎金信
给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。注意:你可以假设两个字符串均只含有小写字母。原创 2024-06-28 16:31:49 · 1220 阅读 · 0 评论 -
代码随想录--哈希表--四数相加
给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500。所有整数的范围在 -2^28 到 2^28 - 1 之间,最终结果不会超过 2^31 - 1。原创 2024-06-28 16:15:03 · 372 阅读 · 0 评论 -
代码随想录--哈希表--两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]原创 2024-06-03 05:36:39 · 918 阅读 · 0 评论 -
代码随想录--哈希表--快乐数
编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True;不是,则返回 False。原创 2024-05-27 05:41:05 · 487 阅读 · 0 评论 -
代码随想录--哈希表--两个数组的交集
题意:给定两个数组,编写一个函数来计算它们的交集。说明: 输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。原创 2024-05-25 05:51:04 · 673 阅读 · 0 评论 -
代码随想录--哈希表--有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true示例 2: 输入: s = “rat”, t = “car” 输出: false说明: 你可以假设字符串只包含小写字母。原创 2024-05-24 06:25:19 · 529 阅读 · 0 评论 -
代码随想录--哈希表--哈希表理论基础
总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。原创 2024-05-16 23:42:26 · 618 阅读 · 0 评论 -
代码随想录--链表--环形链表
题意: 给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。原创 2024-05-16 05:04:46 · 1502 阅读 · 0 评论 -
代码随想录--链表--链表相交
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构。原创 2024-05-16 04:16:31 · 749 阅读 · 0 评论 -
代码随想录--链表--删除链表的倒数第N个节点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], n = 1 输出:[] 示例 3:输入:head = [1,2], n = 1 输出:[1]原创 2024-05-16 03:25:09 · 334 阅读 · 0 评论 -
代码随想录--链表--两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。原创 2024-05-16 02:55:30 · 622 阅读 · 0 评论 -
代码随想录--链表--反转链表
题意:反转一个单链表。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL。原创 2024-05-16 00:23:49 · 1073 阅读 · 0 评论 -
代码随想录--链表--设计链表
题意:在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。原创 2024-05-02 03:14:33 · 1002 阅读 · 0 评论 -
代码随想录--链表--移除链表元素
题意:删除链表中等于给定值 val 的所有节点。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 2: 输入:head = [], val = 1 输出:[]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]原创 2024-04-24 07:13:40 · 1589 阅读 · 0 评论 -
代码随想录--链表--基础知识
接下来说一说链表的定义。链表节点的定义,很多同学在面试的时候都写不好。这是因为平时在刷leetcode的时候,链表的节点都默认定义好了,直接用就行了,所以同学们都没有注意到链表的节点是如何定义的。而在面试的时候,一旦要自己手写链表,就写的错漏百出。这里我给出C/C++的定义链表节点方式,如下所示:// 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数。原创 2024-04-24 06:53:53 · 677 阅读 · 0 评论 -
代码随想录--数组--螺旋矩阵II
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]原创 2024-04-22 06:02:39 · 831 阅读 · 0 评论 -
代码随想录--数组--长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。原创 2024-04-13 05:30:58 · 687 阅读 · 0 评论 -
代码随想录--数组--有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。原创 2024-04-11 06:42:20 · 1019 阅读 · 0 评论 -
代码随想录--数组--移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。原创 2024-04-11 06:22:20 · 834 阅读 · 0 评论 -
代码随想录--数组--二分查找
Java:(版本一)左闭右闭区间// 避免当 target 小于nums[0] nums[nums.length - 1]时多次循环运算return -1;return mid;return -1;(版本二)左闭右开区间return mid;return -1;原创 2024-04-11 06:03:58 · 1141 阅读 · 0 评论