![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
手撕之剑指offer
淅淅同学
地球在转时,小猫在睡午觉,那我就记录一些学习心得叭
展开
-
28-代码随想录18四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):a、b、c 和 d 互不相同你可以按 任意顺序 返回答案。原创 2024-05-07 20:22:27 · 294 阅读 · 0 评论 -
27-代码随想录三数之和
中等给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= j、i!= k 且 j!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。原创 2024-05-06 20:29:30 · 303 阅读 · 0 评论 -
26-代码随想录383赎金信
简单相关标签相关企业给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true;否则返回 false。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:输入:ransomNote = “a”, magazine = “b”输出:false示例 2:输入:ransomNote = “aa”, magazine = “ab”输出:false。原创 2024-04-29 08:14:21 · 221 阅读 · 0 评论 -
25-代码随想录第454题.四数相加II
给定四个包含整数的数组列表 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。例如:输入:输出:2。原创 2024-04-25 22:20:01 · 202 阅读 · 0 评论 -
24-代码随想录1两数之和
力扣题目链接(opens new window)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]#算法公开课。原创 2024-04-22 10:37:03 · 328 阅读 · 0 评论 -
23-代码随想录第202题快乐数
简单相关标签相关企业编写一个算法来判断一个数 n 是不是快乐数。「快乐数」 定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true;不是,则返回 false。原创 2024-04-20 09:22:25 · 201 阅读 · 0 评论 -
22-代码随想录349两个数组的交集
力扣题目链接(opens new window)题意:给定两个数组,编写一个函数来计算它们的交集。给定两个数组 nums1 和 nums2 ,返回 它们的交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序。原创 2024-04-18 09:12:04 · 192 阅读 · 0 评论 -
21-代码随想录242有效的字母异位词
力扣题目链接(opens new window)给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true示例 2: 输入: s = “rat”, t = “car” 输出: false说明: 你可以假设字符串只包含小写字母。原创 2024-04-17 10:11:12 · 179 阅读 · 0 评论 -
20-代码随想录142环形链表二
力扣题目链接(opens new window)题意: 给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回 null。为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。原创 2024-04-16 08:51:30 · 250 阅读 · 0 评论 -
19-代码随想录面试题 02.07. 链表相交
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Intersected at ‘8’原创 2024-04-12 10:00:58 · 496 阅读 · 0 评论 -
18-代码随想录19删除链表的倒数第N个节点
19.删除链表的倒数第N个节点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例 1:19.删除链表的倒数第N个节点输入: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-04-11 14:11:07 · 205 阅读 · 0 评论 -
17-代码随想录24两两交换链表中的节点
24. 两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2024-04-08 12:12:14 · 442 阅读 · 0 评论 -
16-代码随想录206反转链表
206.反转链表力扣题目链接(opens new window)题意:反转一个单链表。示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL206. 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]进阶:链表可以选用迭代或递归方式完成反转。原创 2024-04-07 09:16:27 · 280 阅读 · 0 评论 -
15-代码随想录707设计链表
你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。实现 MyLinkedList 类:MyLinkedList() 初始化 MyLinkedList 对象。int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1。原创 2024-04-06 14:02:17 · 432 阅读 · 0 评论 -
14-代码随想录203移除链表元素
力扣题目链接(opens new window)题意:删除链表中等于给定值 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-05 11:28:56 · 301 阅读 · 0 评论 -
13-代码随想录367有效完全平方数
367. 有效的完全平方数给你一个正整数 num 。如果 num 是一个完全平方数,则返回 true ,否则返回 false 。完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。## 不能使用任何内置的库函数,如 sqrt 。 示例 1:输入:num = 16输出:true解释:返回 true ,因为 4 * 4 = 16 且 4 是一个整数。示例 2:输入:num = 14输出:false解释:返回 false ,因为 3.74原创 2024-04-04 09:39:06 · 390 阅读 · 0 评论 -
12-代码随想录69x的平方根
69. x 的平方根 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。## 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1:输入:x = 4输出:2示例 2:输入:x = 8输出:2解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。原创 2024-04-04 09:22:11 · 754 阅读 · 0 评论 -
11-代码随想录34在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为Ologn的算法解决此问题吗?原创 2024-04-03 19:26:19 · 261 阅读 · 0 评论 -
10-代码随想35搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0。原创 2024-04-02 15:53:30 · 274 阅读 · 0 评论 -
09-代码随想704二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。提示:你可以假设 nums 中的所有元素是不重复的。n 将在 [1, 10000]之间。nums 的每个元素都将在 [-9999, 9999]之间。原创 2024-04-01 15:44:39 · 402 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数。原创 2024-03-27 15:38:01 · 158 阅读 · 0 评论 -
7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。原创 2024-03-27 13:38:25 · 117 阅读 · 0 评论 -
6. Z 字形变换
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。原创 2024-03-26 19:30:46 · 172 阅读 · 0 评论 -
5. 最长回文子串
提示给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。原创 2024-03-26 17:09:38 · 147 阅读 · 0 评论 -
4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。算法的时间复杂度应该为 O(log (m+n))。原创 2024-03-26 16:07:28 · 161 阅读 · 0 评论 -
3. 无重复字符的最长子串
关键是遇到重复的也不能停止遍历,要是它不是最优解咋整。原创 2024-03-19 19:55:49 · 194 阅读 · 0 评论 -
2.两数相加
在设计代码的时候,一开始我就总想着直接把进位加到l2列表之上采用了l2[i+1]=((l1[i]+l2[i])%10+(l1[i-1]+l2[i-1])//10)//10#进一但这样有了列表长度的限制,一梳理发现想的很美好,运行起来需要加更多限制条件,越改越乱所以在设计代码的时候,要简单清晰明了,脑子一乱毁所有。原创 2024-03-19 13:27:16 · 365 阅读 · 0 评论 -
1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。原创 2024-03-16 19:41:45 · 384 阅读 · 0 评论