自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 【算法思想·二叉树】纲领篇

如果可以,写出这个递归函数的定义,并充分利用这个函数的返回值,这叫「分解问题」的思维模式。

2024-09-03 01:39:31 338

原创 【算法思想·数组】一道数组去重经典算法题

本文参考labuladong算法笔记[本文讲的问题应该是去重相关算法中难度最大的了,把这个问题搞懂,就再也不用怕数组去重问题了。

2024-08-31 00:49:13 666

原创 【算法思想·数组】一个方法团灭nSum问题

经常刷力扣的朋友肯定知道鼎鼎有名的twoSum问题,不过除了twoSum问题,力扣上面还有3Sum4Sum问题,以后如果想出个5Sum6Sum也不是不可以。总结来说,这类nSum问题就是给你输入一个数组nums和一个目标和target,让你从nums选择n个数,使得这些数字之和为target。那么,对于这种问题有没有什么好办法用套路解决呢?本文就由浅入深,层层推进,用一个函数来解决所有nSum类型的问题。

2024-08-31 00:13:00 939

原创 【算法思想·链表】如何判断回文链表

1、前言本文参考labuladong算法笔记[1、前言首先,寻找回文串是从中间向两端扩展,判断回文串是从两端向中间收缩。对于单链表,无法直接倒序遍历,可以造一条新的反转链表,可以利用链表的后序遍历,也可以用栈结构倒序处理单链表。具体到回文链表的判断问题,由于回文的特殊性,可以不完全反转链表,而是仅仅反转部分链表,将空间复杂度降到 O(1)。因为回文串长度可能为奇数也可能是偶数,长度为奇数时只存在一个中心点,而长度为偶数时存在两个中心点,所以上面这个函数需要传入l和r。而。

2024-08-25 22:05:10 678

原创 【算法思想·链表】单链表的花式反转方法汇总

反转单链表的迭代解法不是一个困难的事情,但是递归实现就有点难度了。如果再加一点难度,让你仅仅反转单链表中的一部分,你是否能够同时用迭代和递归实现呢?再进一步,如果让你 k 个一组反转链表,阁下又应如何应对?本文就来由浅入深,一次性解决这些链表操作的问题。我会同时使用递归和迭代的方式,并结合可视化面板帮助你理解,以此强化你的递归思维以及操作链表指针的能力。2、反转整个单链表# 单链表节点的结构单链表反转是一个比较基础的算法题,力扣第 206 题「反转链表」就是这个问题。迭代解法。

2024-08-23 01:40:40 749

原创 【算法思想·链表】双指针技巧秒杀七道链表题目

毫不夸张地说,双指针法可以解决80%的链表题目,剩下的20%变变样子也可以用双指针解~尤其是快慢指针fast & slow,堪称链表大杀器!

2024-08-22 12:26:36 873

原创 【算法思想·数组】二分搜索实战应用

本文参考labuladong算法小抄[

2024-08-20 01:55:47 1032

原创 【算法思想·数组】二分搜索终极模板

1、分析二分查找代码时,不要出现 else,全部展开成 else if 方便理解。2、注意「搜索区间」和 while 的终止条件,如果存在漏掉的元素,记得在最后检查。3、如需定义左闭右开的「搜索区间」搜索左右边界,只要在时做修改即可,搜索右侧时需要减一。4、如果将「搜索区间」全都统一成两端都闭,好记,只要稍改条件处的代码和返回的逻辑即可,推荐拿小本本记下,作为二分搜索模板。5、搜索区间时关于越界问题的思考:不管搜索左边界还是右边界,都要考虑数组的越界,既要考虑向左越界,又要考虑向右越界。搜索左边界。

2024-08-18 23:42:27 896

原创 【算法思想·数组】滑动窗口终极模板

滑动窗口本身思路上讲并不复杂,无非是left和right两个指针构建起一个动态window,再根据数据处理需要扩大或缩小窗口。但很多时候我们写滑动窗口总是难以尽善尽美,关键就在于对细节的把控,尤其是对窗口边界值处理不当和窗口变化机制的理解不够本文参考labuladong算法小抄[2、滑动窗口基本框架这个算法技巧的时间复杂度是 O(N),比字符串暴力算法要高效得多。这两个...处的操作分别是扩大和缩小窗口的更新操作,等会你会发现它们操作是完全对称的。

2024-08-18 18:45:22 710

原创 【算法思想·数组】二维数组的花式遍历

本文参考labuladong算法小抄[

2024-08-17 17:20:22 457

原创 【算法思想·链表】构造链表

链表作为很常用的数据结构,很多同学在日常使用过程中或多或少都会遇到链表相关的问题,其中最常见的就是链表遍历和指针使用的问题。通过亲自手写链表,可以帮助我们深入理解链表。数据结构的工程化使用,无外乎就是增删查改,当我们亲手实现一次链表的功能,链表这个数据结构就算真正入门了。本文参考[

2024-08-15 11:35:33 746

原创 【算法思想·数组】双指针秒杀七道算法题

和。在数组中并没有真正意义上的指针,但我们可以把索引当做数组中的指针,这样也可以在数组中施展双指针技巧,。原地修改数组。

2024-08-12 14:50:43 900

原创 【算法思想·数组】差分数组

差分数组思想前缀和原始数组不会被修改。差分数组对原始数组进行增减差分数组思想比如说,我给你输入一个数组nums,然后又要求给区间nums[2..6]全部加 1,再给nums[3..9]全部减 3,再给nums[0..4]全部加 2,再给…一通操作猛如虎,然后问你,最后nums数组的值是什么?常规的思路很容易,你让我给区间nums[i..j]加上val,那我就一个 for 循环给它们都加上呗,还能咋样?这种思路的时间复杂度是 O(N),由于这个场景下对nums的修改非常频繁,所以效率会很低下。

2024-08-11 19:13:39 600

原创 【算法思想·数组】前缀和

一维数组中的前缀和计算一个索引区间内的元素之和一维数组中的前缀和力扣第。

2024-08-11 00:42:39 757

原创 代码随想录算法训练营day06 | 1. 两数之和,454. 四数相加 II,15. 三数之和,18. 四数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。若nums[i] == nums[i-1] 则 i += 1(i 右移), 若nums[j] = nums[j+1], 则 j -= 1(j左移)解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。

2023-06-15 20:47:09 99 1

原创 代码随想录算法训练营day05 | 242.有效的字母异位词, 349. 两个数组的交集, 202. 快乐数

2、遍历 nums1 和 nums2 两个列表里的每个数值,将其添加到tab1和tab2对应的位置。c. 遍历table, 若有位置的值不为0则说明该位置没有对冲的字母。3、遍历tab1和tab2,对应位置的数相乘若不为0则说明有交集。1、创建两个长度为1001的列表,tab1 和 tab2。b. 遍历两个字符串,字母对应的位置加加减减。a. 创建表示26个字母位置的table。中每个字符出现的次数都相同,则称。输出结果中的每个元素一定是。1、数据结构:列表 / 数组。[4,9] 也是可通过的。

2023-06-09 13:11:44 94

原创 代码随想录算法训练营day04 | 19. 删除链表的倒数第 N 个结点, 面试题 02.07. 链表相交, 142.环形链表II

给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。[1,2,3,5][][1]思路:方法一:单指针遍历1、设链表总结点数为N, 则被删除的节点之前共有 N - n 个节点2、则指针cur遍历到第 N - n 个时 执行 cur.next = cur.next.next 即可方法二:间隔为 n+1 的双指针法:1、先建立双指针fast 和 slow2、fast向前移动 n+1 个节点3、fast 和 slow 一起向前移动,直到 fast指向 None。

2023-06-06 13:11:03 83

原创 代码随想录算法训练营day03 | 203.移除链表元素, 206.翻转链表, 24. 两两交换链表中的节点

e. a 和 b 两个指针指向 cur 后的两个节点,进行交换,注意与后续节点保持连接。d. 考虑到是两两交换节点,故每次移动cur,只处理cur 后的两个节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。输入:head = [], val = 1。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[1,2,3,4,5]输出:[5,4,3,2,1]输入:head = []

2023-06-05 00:57:16 94 1

原创 代码随想录算法训练营day02 | 977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。tips:range(i, j) 包含i不包含j, range(b, t-1, -1)是从b开始到t-1,不包含t-1,只到t(相当于数轴上从右往左数,左为开区间)输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]

2023-05-29 19:50:37 95

原创 代码随想录算法训练营day01 | 704. 二分查找,27. 移除元素

代码随想录刷题训练营

2023-05-29 15:52:47 163 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除