题干:给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

也是很经典的滑动窗口寻找子序列的问题,重点依然是双指针
Read more »

题意:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序

暴力解法是把数组的每个元素取平方后,用各种排序算法来排序 时间复杂度为O(nlogn) 双指针可以直接把时间复杂度降到O(n)

Read more »

最简单暴力的移除元素就是套两层for循环 让后面的元素不断去覆盖前元素实现数组的删除

这个O(n*n)的方法大部分都是会卡掉的 我们同时也知道 双指针通常是可以优化类似的数组问题

因此我们这里就介绍一下移除数组的双指针做法

Read more »

二分作为大一就没有搞懂的硬骨头,模糊的主要原因是区分不了二分查找二分答案

而且网上的二分答案模板实在是太多太多了 自己刷的题目数量也没跟上,导致模板总是忘

借着这个博客,彻底搞懂二分!!😡

Read more »

题: 给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

为了表示给定链表中的环,使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

环形链表

Read more »

​ 给你两个单链表的头节点 headAheadB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null

图示两个链表在节点 c1 开始相交**:**

链表相交

Read more »

​ 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点,注意时间复杂度要求是O(n)

我心目中最经典的快慢指针例题

Read more »

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

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

Read more »

移除链表元素

如何移除链表的节点我这里不再过多赘述,之所以要特意为此写一篇博客是想重新认识一下虚拟头节点的作用

在没有虚拟头节点的情况下,删除链表中的元素有两种情况

  • 删除头节点
  • 删除非头节点
1
2
3
4
5
# 删除头节点
head=head.next

#删除非头节点
current.next=current.next.next

其实主要的原因就是 我们链表删除一个节点通常是通过修改上一个节点的指针对象,而头节点本身作为第一个节点,没有上一个节点,因此需要特殊处理

Read more »

翻转链表——双指针解法

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

例子 : 1->2->3->4 反转后 4->3->2->1

这题的重点就是用一个快慢指针,两个指针一前一后将相邻节点改变指向。

稍微需要注意的事情就是 翻转过程中指针传递的先后顺序和引入中间变量temp

Read more »
0%