自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 刷题记录31|理论基础、455.分发饼干、376.摆动序列、53.最大子序和

【代码】刷题记录31|理论基础、455.分发饼干、376.摆动序列、53.最大子序和。

2023-07-10 20:33:36 41

原创 刷题记录32|122.买卖股票的最佳时机II 、55. 跳跃游戏 、45.跳跃游戏II

题目条件:最多持有一支股票,可以在同一天买入和出售。思路:把利润分解为每两天的利润,只取正利润。

2023-07-10 20:31:31 47

原创 刷题记录23|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树

【代码】刷题记录23|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树。

2023-07-08 21:04:40 43

原创 刷题记录24|理论基础、77.组合

【代码】刷题记录24|理论基础、77.组合。

2023-07-08 21:03:58 55

原创 刷题记录25|216 组合总和III、17 电话号码的字母组合

本题每一个数字代表的是不同集合,也就是求不同集合之间的组合,因此这里的for循环不需要startIndex,这里的index用来表示取哪个集合,并同时表示深度。

2023-07-08 21:03:08 82

原创 刷题记录26、27|39.组合总和、40.组合总和II、131.分割回文串

同一树层,used[i - 1] == false 才能表示,当前取的 candidates[i] 是从 candidates[i - 1] 回溯而来的。而 used[i - 1] == true,说明是进入下一层递归,去下一个数,所以是树枝上。这道题需要去重,判断同一树层上元素(相同的元素)是否使用过。

2023-07-08 21:02:16 29

原创 刷题记录28|93.复原IP地址、78.子集、90.子集II

相较于上一题,需要对同一树层相同的值去重,流程为先对数组排序,设置一个bool数组,默认为false,在递归时,将对应的bool设为true,回溯时,将bool设为false,这样,回溯时,若 在同一树层上前一个num和当前num相同且used为false,即重复了,continue跳过即可。

2023-07-08 21:01:33 30

原创 刷题记录29|491.递增子序列、46.全排列、47.全排列 II

去重逻辑相较于之前有所改变。

2023-07-08 21:00:27 71 1

原创 刷题记录30|332.重新安排行程、51.N皇后、37.解数读

【代码】刷题记录30|332.重新安排行程、51.N皇后、37.解数读。

2023-07-08 20:59:24 77 1

原创 刷题记录22|235. 二叉搜索树的最近公共祖先、 701.二叉搜索树中的插入操作 、 450.删除二叉搜索树中的节点

【代码】刷题记录22|235. 二叉搜索树的最近公共祖先、 701.二叉搜索树中的插入操作 、 450.删除二叉搜索树中的节点。

2023-06-28 20:57:39 44 1

原创 刷题记录21|530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、 236. 二叉树的最近公共祖先

1.递归(中序遍历)转化为有序数组。

2023-06-27 14:47:49 79 1

原创 刷题记录20| 654.最大二叉树 、617.合并二叉树 、 700.二叉搜索树中的搜索、98.验证二叉搜索树

1.递归(中序)转为有序数组验证是否递增。

2023-06-26 13:19:35 41 1

原创 刷题记录18|找树左下角的值 、路径总和 、 从中序与后序遍历序列构造二叉树

时间复杂度 O(n),其中 n 是二叉树的节点数目。空间复杂度 O(n)。如果二叉树是满完全二叉树,那么队列 q 最多保存 ⌈n/2⌉ 个节点。

2023-06-25 16:09:24 64

原创 刷题记录17|110.平衡二叉树 (优先掌握递归)、 257. 二叉树的所有路径 (优先掌握递归)、 404.左叶子之和 (优先掌握递归)

2.递归中间返回条件,左右子树一旦有一个高度为-1时,直接返回给上一个节点告诉上一个节点这个二叉树已经不是一个平衡二叉树了。1.递归终止条件 node==NULL,return 0。

2023-06-25 15:11:18 37

原创 刷题记录16|104.二叉树的最大深度 559.n叉树的最大深度、111.二叉树的最小深度 (优先掌握递归)、222.完全二叉树的节点个数(优先掌握递归)

而根节点的高度就是二叉树的最大深度 时间复杂度 O(log n × log n)空间复杂度 O(log n)

2023-06-24 21:56:47 42 1

原创 刷题记录15|层序遍历 10、226.翻转二叉树 、101.对称二叉树 2

1.用队列辅助遍历2.用递归 时间复杂度 O(n),其中 n 是二叉树中的节点个数。每个节点访问一次,结果列表使用链表的结构时,在结果列表头部添加一层节点值的列表的时间复杂度是 O(1),因此总时间复杂度是 O(n)。空间复杂度 O(n),其中 n 是二叉树中的节点个数。空间复杂度取决于队列开销,队列中的节点个数不会超过 n。 1.广度优先遍历(层序遍历)2.深度优先遍历(前序用栈) 3.递归法(swap完,先左后右或先右后左不影响) 递归时间复杂度:O(N),其中 N 为二叉树节点的数目。我们会遍

2023-06-21 11:23:28 32

原创 刷题记录14|二叉树递归遍历、迭代遍历、统一迭代

1.前序2.后序3.中序 同上1.前序2.中序3.后序用栈实现迭代。

2023-06-20 21:51:05 30

原创 刷题记录13(12休息)|239. 滑动窗口最大值(一刷至少需要理解思路) 、347.前 K 个高频元素 (一刷至少需要理解思路)

时间复杂度 O(n)空间复杂度 O(k) 一个堆的概念及实现。后续补充!!!!!!!!!时间复杂度 O(nlogk)空间复杂度 O(n)先看了一遍思路,后续再来详细更新理解

2023-06-19 11:11:53 34

原创 刷题记录11| 20. 有效的括号 、 1047. 删除字符串中的所有相邻重复项 、 150. 逆波兰表达式求值

2.直接拿字符串作为栈版本。2.代码随想录的版本。

2023-06-18 17:30:46 51 1

原创 刷题记录10| 232.用栈实现队列 、225. 用队列实现栈

栈和队列栈的特点是先入后出队列的特点是先入先出c++STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)栈不提供走访功能,也不提供迭代器(iterator)。不像是set 或者map 提供迭代器iterator来遍历所有元素。常用的SGI STL,如果没有指定底层实现的话,默认是以deque为缺省情况下栈的底层结构。deque是一个双向队列,只要封住一段,只开通另一端就可以实现栈的逻辑了。队列中先进先出的数据结构,同样不允许有遍历行为,不提供迭代器,

2023-06-16 11:18:11 32 1

原创 刷题记录09|28. 实现 strStr()、459.重复的子字符串 、字符串总结

字符串是若干字符组成的有限序列,也可以理解为是一个字符数组在C语言中,把一个字符串存入一个数组时,也把结束符 '\0'存入数组,并以此作为该字符串是否结束的标志。在C++中,提供一个string类,string类会提供 size接口,可以用来判断string类字符串是否结束,就不用'\0'来判断是否结束。vector< char > 和 string 在基本操作上没有区别,但是 string提供更多的字符串处理的相关接口,例如string 重载了+,而vector却没有。

2023-06-15 22:06:41 29 1

原创 刷题记录08| 344.反转字符串 、541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串

resize调整容器中有效数据区域的尺寸,如果尺寸变小,原来数据多余的截掉。reserve为容器预留足够的空间,避免不必要的重复分配,分配空间大于等于函数的参数,影响capacity。resize(new_size,'填充参数')尺寸变大扩充时可以给定一个填充参数,默认位NULL或'\0'双指针不断靠拢,左右交换,可以定义一个temp保存用来原地交换,也可以直接使用库函数swap交换。思路先遍历取得空格数,再扩充字符串,用s.resize()函数。思路先去除冗余空格,再翻转整个字符串,再按单词依次翻转。

2023-06-14 22:31:16 26

原创 刷题记录05休息 06| 242.有效的字母异位词、349. 两个数组的交集 、 202. 快乐数 、 1. 两数之和

1.unordered_map计数用map计数,两个字符串如果长度不相等肯定不是异位词。最后需要遍历一遍map,若还有对应key的val不为0也说明不是异位词。2.随想录版本 定义常量辅助数组(因为题目提示只针对26个字母)1.unordered_map计数(底层哈希表)空间复杂度 O(n)时间复杂度 O(n)2.定义常量辅助数组空间复杂度 O(1)时间复杂度 O(n) 空间复杂度: O(n)时间复杂度: O(mn)题目中说了会 无限循环,那么也就是说求和的过程中,sum会重复出现,这对解题很重要!当我们遇

2023-06-12 11:26:15 28

原创 刷题记录04|24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交、142.环形链表II

链表结构体写法。

2023-06-10 11:18:14 68

原创 刷题记录03|203.移除链表元素 、707.设计链表 、206.反转链表

来充当翻转后链表的末尾,然后就是用一个。

2023-06-09 20:50:05 181 1

原创 刷题记录02|977.有序数组的平方 、209.长度最小的子数组、59.螺旋矩阵II

定义相关1数组是存放在连续内存空间上的相同类型数据的集合。下标从0开始,数组声明后,对于其中的元素只能覆盖不能删除。2.二维数组,在c++中内存地址是连续的,java则是不连续的。3.c++的vector的底层不是直接使用简单的静态数组,在概念上可以将其视为一个封装了动态分配内存的数组,提供了一种类似于数组的接口和行为,并且在内部使用动态分配的内存来支持可变大小的数组,比如可以使用erase函数来删除某个元素。运用相关1.数组+有序 可以考虑二分法 时间复杂度O(logn)

2023-06-08 20:22:56 281 1

原创 刷题记录01|704. 二分查找 、27. 移除元素

主要思想是采用双指针,快慢同向指针,一个停留在与目标数字相同的索引处,另一个去寻找下一个不是目标数字的索引处。当一开始没遇到目标数字时,就自己覆盖自己,遇到后,慢指针停留在目标数字处,快指针去寻找下一个不是目标数字的索引来覆盖目标数字。这里采用了左闭右闭,即 [left,right]。因此是left

2023-06-08 16:02:26 273 1

空空如也

空空如也

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

TA关注的人

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