
做题笔记
文章平均质量分 86
编程刷题记录分享
大家好我叫张同学
为了方便小伙伴们的学习和借鉴,我已取消了所有博客的水印!快来一起学习吧~
展开
-
【Leetcode刷题笔记之数组篇】26. 删除有序数组中的重复项
给你一个 升序排列 的数组 nums,请你 原地删除重复出现的元素,使每个元素 只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有`k 个元素,那么nums的前 k 个元素应该保存最终结果。 将最终结果插入nums的前 k 个位置后返回 k。 不要使用额外的空间,你必须在 `原地`修改输入数组 并在使用原创 2022-04-15 16:21:02 · 2244 阅读 · 43 评论 -
【Leetcode刷题笔记之链表篇】剑指 Offer 18. 删除链表的节点
给定单向链表的`头指针`和一个要删除的`节点的值`,定义一个`函数`删除该节点。 返回删除后的链表的`头节点`。原创 2022-01-28 21:55:56 · 2194 阅读 · 10 评论 -
【Leetcode刷题笔记之链表篇】142. 环形链表 II
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 `next `指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数` pos` 来表示链表尾连接到链表中的位置(索引从` 0` 开始)。如果 pos 是` -1`,则在该链表中没有环。 注意:`pos `不作为参数进行传递,仅仅是为了标识链表的实际情况。`不允许修改` 链表。原创 2022-01-20 17:45:00 · 1216 阅读 · 1 评论 -
【Leetcode刷题笔记之链表篇】141. 环形链表
给你一个链表的头节点 `head` ,判断链表中`是否有环`。 如果链表中有某个节点,可以通过`连续跟踪` `next `指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数` pos `来表示链表尾连接到链表中的位置(索引从` 0` 开始)。如果` pos` 是` -1`,则在该链表中没有环。注意:`pos` 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 `true` 。 否则,返回 `false` 。原创 2022-01-18 18:00:00 · 983 阅读 · 8 评论 -
【Leetcode刷题笔记之链表篇】160. 相交链表
给你两个单链表的头节点 `headA` 和 `headB` ,请你找出并返回两个单链表`相交`的`起始节点`。如果两个链表`不存在`相交节点,返回 `null `。 图示两个链表在节点 c1 开始相交:理解相交:不是指A链表中有和B链表中val值相同的结点,而是指这个两个链表中存在相同的结点,如果我们通过指针去遍历A、B两个链表,能够在A、B中找到相同地址的结点,那A、B相交,否则就是不相交。原创 2022-01-16 17:30:00 · 974 阅读 · 12 评论 -
【Leetcode刷题笔记之链表篇】234. 回文链表
给你一个单链表的头节点 `head` ,请你判断该链表是否为`回文链表`。 如果`是`,返回 `true` ;否则,返回` false` 。具有对称性的链表就具有回文结构如果是单数个结点,中间的结点无需考虑,如果其他结点对称肯定是回文结构例如:1 2 3 1 2 也是回文结构这里借助求链表倒数第k个结点的思路。只要链表的.....原创 2022-01-15 17:45:00 · 1389 阅读 · 10 评论 -
【Leetcode刷题笔记之链表篇】剑指 Offer 22. 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有` 6 `个节点,从头节点开始,它们的值依次是 `1、2、3、4、5、6`。这个链表的倒数第 `3 `个节点是值为 `4` 的节点。`单链表`要求倒数第k个结点,由于结点之间关系的`单向性`,并不好直接求。但是如果我们将`倒数`转化为`顺数`,那么仅需要从头节点开始遍历链表便可轻松实现,具体过程看图解.....原创 2022-01-12 12:00:00 · 1074 阅读 · 19 评论 -
【Leetcode刷题笔记之链表篇】21. 合并两个有序链表
将两个升序链表合并为一个新的 `升序` 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 我们可以将list2选为合并后待返回的链表,然后将list1中的结点合并到list2中.注意:在实际写代码的时候,我们会发现仅有一个`next`用来保存`cur1`的下一个结点是不够的。`cur2`的下一个结点的信息也需要保存(`假设`下一个结点`不为空`,若为空直接`cur1`结点插入`cur2`后即可),因为在比较的时候......原创 2022-01-14 17:30:00 · 1089 阅读 · 15 评论 -
【Leetcode刷题笔记之链表篇】面试题 02.04. 分割链表
总体而言,要想实现分割链表的目的有两种大的思路。一种是`不创建新的链表`,直接在`原链表`上面进行相应的操作。另一种是`创建一个新的链表`,将原来的链表`挪到`新链表中,同时达到想要的效果。原创 2022-01-13 17:45:00 · 894 阅读 · 12 评论 -
【Leetcode刷题笔记之链表篇】876. 链表的中间结点
给定一个头结点为 `head` 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。要得到中间结点,我们很容易想到的一种方法就是:先`遍历一遍链表`,求出`链表长度`,然后再从头开始,`走到中间结点`去,返回中间结点......原创 2022-01-10 18:00:00 · 1230 阅读 · 18 评论 -
【Leetcode刷题笔记之链表篇】206. 反转链表
要反转链表,一个很容易想到的方法就是:直接将链表结点之间的链接关系`反过来`。例如原来为`1->2`,反过来就是`1<-2`,也就是`2->1`。 除了使用这种迭代的方式之外,我们还可以使用头插法。将原来的链表`头插`到一个新的链表中,那么链表的方向就会反过来。除了以上两者方式外,还有一种递归实现的方法,递归版本稍微复杂一些,其关键在于反向工作。假设列表的其余部分已经被反转,现在我们应该如何反转它前面的部分?原创 2022-01-09 18:00:00 · 1459 阅读 · 18 评论 -
【Leetcode数据结构算法题】203. 移除链表元素(链表篇)
题目内容:给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。leetcode题目链接(点击即可跳转)思路分析这是一个比较简单的单链表题目,属于单向不带头非循环链表。要注意这里的头节点不是带头结点的那种“头结点”。这里的头节点相当于链表的名字(巨坑)。虽然题目本身难度系数不大,但是如果不细心分析清楚,一看到题目就立马编程,那么调试的时候可能会耗费挺多时间的。实际上,对于链表相关的题目,不管难易程度如何原创 2022-01-08 20:00:00 · 439 阅读 · 7 评论 -
【Leetcode数据结构算法题】数组形式的整数加法(顺序表篇)
题目内容:对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。leetcode题目链接(点击即可跳转):...原创 2022-01-05 22:33:47 · 544 阅读 · 11 评论 -
【Leetcode数据结构算法题】轮转数组(顺序表篇)
题目内容:给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。leetcode题目链接(点击即可跳转)思路分析看完题目后,我们首先要做的就是理解题目的含义,也就是审题。从不同维度,不同角度的去设问题并主动回答这些问题。题目中出现了一个我们比较陌生的词语“轮转”,可能我们一下子无法理解这个词是啥子玩意儿。这个时候就可以借助题目中的示例来帮助理解。比如说示例1:用通俗的话来说就是,向右轮转1步,就是将最后一个元素放到第一个位置,其余元素位置向右移动一个位置。类似于所有元素向原创 2022-01-02 19:00:00 · 769 阅读 · 11 评论 -
【Leetcode数据结构算法题】合并两个有序数组(顺序表篇)
题目内容:给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。leetcode题目链接(点击即可跳转原创 2022-01-01 18:00:00 · 1546 阅读 · 15 评论 -
【Leetcode数据结构算法题】删除有序数组中的重复项(顺序表篇)
题目内容:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。Leetcode题目链接(点击即可跳转)思路分析我们先假设没有“原地”删除重复项的这个要求,如果我们要解决“删除有序数组中的重复项”,能采取什么样的方法?(开动小脑袋瓜,想一想!)我们可以先创建一个临时数组,遍历原数组,将数组中的非重复元素放到临时数组中,最后将临时数组的内原创 2021-12-31 18:30:00 · 988 阅读 · 8 评论 -
【Leetcode数据结构算法题】原地移除元素(顺序表练习题)
题目内容:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。leetcode题目链接(点击即可跳转):思路分析①看完了题目,我们首先来理解一下题目的含义。这个题目其实就算是说,有一个数组,而且还是一个整型数组,数组里面有一堆数字。然后给你一个特定的数字,这个数字有可能在数组里面找不到,也原创 2021-12-30 23:01:03 · 1396 阅读 · 16 评论 -
【数据结构学习笔记】一、数据结构介绍及算法分析(新手入门进阶指南)
文章目录一、数据结构和算法介绍1.什么是数据结构?2.什么是算法?3.数据结构和算法的重要性4.如何学好数据结构和算法5.数据结构和算法书籍及资料推荐6.经常遇到不会做的题目二、算法分析1、算法效率时间复杂度1.时间复杂度的概念:2.大O的渐进表示法空间复杂度1.空间复杂度的概念:2.大O渐进法表示法:数据结构学习的心理准备:一、数据结构和算法介绍1.什么是数据结构?数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。理解原创 2021-07-15 11:49:57 · 1134 阅读 · 10 评论 -
【Leetcode算法热题 --- 数组篇】丢失的数字
文章目录题目内容:题目理解:解题思路思路一:求和做差法思路二:异或找单法思路三:排序法思路四:哈希表法题目内容:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。(进阶: 你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?)Leetcode题目链接(点击即可跳转):丢失的数字题目理解:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。假设原创 2021-08-11 22:33:35 · 898 阅读 · 5 评论 -
左旋字符串及其进阶
文章目录左旋字符串方法一:创建临时数组法代码实现:方法二:临时变量k次法代码实现:方法三:三步翻转法代码实现:左旋字符串进阶方法一:左旋k次比较法代码实现:方法二:查找字串法代码实现:完整代码一:完整代码二:左旋字符串题目内容:实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB理解题意并画出相应的图解:思考:首先对于字符串,我们应该主动的将其完整的内容补全,字符串是以‘\0’为结束标志,虽然字符串’'ABCD"的字符.原创 2021-06-14 10:39:28 · 530 阅读 · 9 评论