自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++八股(面试题、手撕题)自用版

所谓虚函数就是在基类定义一个未实现的函数名,为了提高程序的可读性,建议后代中虚函数都加上。

2024-05-12 22:25:10 1121

原创 刷题--动态规划

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。动态规划的核心就是找方程,第i个状态和第j个状态的关系,不仅仅局限于i 与 i-1, i-2的关系,更多的是 i 与 j 不是相邻,多积累。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

2024-03-30 17:13:11 326

原创 记录C++好用快捷的函数

字符串题:---持续补充。

2024-03-29 09:48:06 219 1

原创 记录刷题中遇到的知识点方便复习(十七)(图论)(BFS)(DFS)

做了一些笔试,都是要求自己写输入输出,之后练习以ACM模式为主,因为不熟悉代码,导致第一次笔试写的超级慢,要超级多的练习才行。今天是图论部分要把(BFS)和(DFS)彻底弄明白在二叉树里面已经学习过两种搜索方式的思想,对于图来说也是类似的先说算法参考:可以用队列的方式实现可以用递归或者栈实现2.1 递归2.2 栈。。。光看代码还有理解原理不够,要在大量题目中应用才能真正掌握,吃了太多没有足够练习的亏。。

2024-03-29 08:43:47 720 2

原创 记录刷题中遇到的知识点方便复习(十六)(二叉树3)

也就是广度优先搜索,遍历每一层,取出来每一层的最后元素就好了,代码如下:就是在层序遍历的基础上把每一层的最后一个元素存下来,就得到结果了。另外评论区有一个很棒的解法:直接把左子树的最右节点连接到根的右节点,再把根的右子树连接改成左子树,根移动到右节点,依次循环到null也就是右子树的底部。另外就是递归的方法:反前序遍历,即首先得到的是前序遍历的最后一个节点,存为pre,然后把倒数第二个节点的右子树存在pre,回溯的思想。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

2024-03-21 17:41:30 595 1

原创 记录刷题中遇到的知识点方便复习(十五)(二叉树2)

C++ STL容器C++STL【容器】详解 (全站最详细) - 知乎 (zhihu.com)1. 顺序容器1.1 vector 可变大小数组1.2 deque 双端队列1.3 list 双向循环链表1.4 forward_list 单向链表1.5 array 固定数组2. 关联式容器2.1 set2.2 map3 容器适配器之所以叫容器适配器,是因为用来适配容器来提供其它不一样的功能。通过对应的容器和成员函数来实现我们需要的功能3.1 stack 堆栈 先进后出。

2024-03-20 10:31:13 906 1

原创 记录刷题中遇到的知识点方便复习(十四)(二叉树1)

二叉树基础知识总结:参考:二叉树知识点最详细最全讲解-CSDN博客二叉树的基本操作(C++实现)_二叉树c++实现-CSDN博客labuladong算法小抄笔记2:数据结构---二叉树1 - 知乎 (zhihu.com) 1. 定义二叉树力扣上的定义:做题的时候可能就以力扣的这个定义为准了。 2. 创建二叉树二叉树有两种存储方式:链式存储和顺序存储 链式存储很好理解,就是用链表的方式,一个节点存储了值,以及指向左右子树的指针;顺序存储就是用数组,将二叉树节点按顺序存储下来。这两种方式的创建方式也

2024-03-19 11:47:16 864 1

原创 在线编程常见输入输出练习

输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入。每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。输入包括两个正整数a,b(1 <= a, b <= 1000),输入数据包括多组。输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。每行的第一个整数为整数的个数n(1 <= n <= 100)。每行的第一个整数为整数的个数n(1 <= n <= 100)。

2024-03-18 19:50:56 273

原创 记录刷题中遇到的知识点方便复习(十三)(链表4)

这个题目乍一看很复杂,但理解起来不难,就是要复制一个链表,而这个链表多了一个random指针,由于这个指针的指向不确定,所以不能按顺序来复制链表,因为这个指针指向的节点很有可能还没有被创建。这个思路就是将原链表每一个节点一一复制在其后,这样在找到原节点random指向的节点的同时也找到了新链表节点random的指向。找链表中点的方式是快慢指针,快指针走两步,慢指针走一步,快指针到达链表中点时,慢指针指向的就是中点。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。

2024-03-18 16:58:27 597

原创 记录刷题中遇到的知识点方便复习(十二)(链表3)

生病了几天,要抓紧补回来了TuT。

2024-03-18 11:43:14 283

原创 记录刷题中遇到的知识点方便复习(十一)(链表2)

将头结点相加,大于10的话就进一,当一个链表遍历完了之后只对非空链表进行操作,依旧是大于10进一,进位我用flag表示了。可以发现第二个while和第一个的操作是一样的,只不过变成了一个链表。当然可以直接对链表进行操作,比较链表的头结点,将较小的头结点存入新链表,并把指针后移一位。看到排序惯性思维我想到数组的排序,于是把链表转为数组,排序后再创建链表。新链表是通过拼接给定的两个链表的所有节点组成的。的链表,表示两个非负的整数。请你将两个数相加,并以相同形式返回一个表示和的链表。,判断链表中是否有环。

2024-03-12 11:19:37 375 1

原创 记录刷题中遇到的知识点方便复习(十)(链表1)

今天全是题,先记录一下链表的基本操作参考1. 定义结点类型2. 定义表头并初始化3. 创建新结点4. 创建一个链表4.1 尾插法4.2 头插法一般的话是写一个函数创建链表,把整个初始化加创建链表的过程放到一起。力扣上的一个标准但是我目前没有特别发现什么时候该用new,什么时候用malloc,以后深入学习再区分吧。5. 遍历链表其他对链表的操作就在题目里面学吧。

2024-03-11 22:53:42 839 1

原创 记录刷题中遇到的知识点方便复习(九)(矩阵)

起始就是从对角顶点开始找,大于targe的话,就删去大于的一边,小于target的话就删去小于的一边,慢慢矩阵就缩小,直到查找到target或者找完整个矩阵就完成了。碰到大于target的元素值直接break,碰到小于target的值就continue。的方式,只需要去循环输出边界就好了,注意跳出循环的判断,以及i++和++i的区别。这道题就是记录下有0的行和有0的列,然后全部置零就好了。旋转图像,这意味着你需要直接修改输入的二维矩阵。稍微提一下的就是,矩阵就是二维数组嘛,创建方式为。

2024-03-08 11:56:07 938 1

原创 记录刷题中遇到的知识点方便复习(八)

核心的思路就是找到第 i 个数左边的数的乘积 L(i) 与右边的数的乘积 R(i),那么第 i 个数以外的所有数乘积就是 L(i)*R(i)。这道题限制了时间复杂度和空间复杂度,感觉好难,我在根据哈希表的提示之后写出来下面这个代码,但是不满足限制要求。也比较简单,不管用什么方法都能做出来,就是对数组的基本操作。要求不能用除法且时间复杂度为O(n),比前两题稍微加难度了。贴一个简单的答案(评论区看见的):三次翻转就可以了。这个题目比较简单,不详细说了,贴个代码记录一下。,请你找出其中没有出现的最小的正整数。

2024-03-08 08:47:17 308 1

原创 记录刷题中遇到的知识点方便复习(七)(动态规划)

题解可以参考力扣上的各路大神写的解法,但就我目前的水平,把他当作一个数学题,找出状态转移方程都太难想了,决定先发放一放,试图理解其他的更好理解的方法例如二分法等。爬楼梯比杨辉三角难的点在于,爬楼梯的状态转移方程需要自己找,杨辉三角是直接给出来了,像爬楼梯这样的题目就是要多积累才能立刻找出来。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。我认为这几个题目的相似点,就是在循环中,当前状态。

2024-03-06 14:43:53 635 1

原创 记录刷题中出现的知识点方便复习(六)

但是他的代码没给C++的,于是我去看了官方解答。官方解答里面有提到一个优先队列的方法,提及堆的概念,但是目前我还没学,暂时不看了,只看单调队列这一个方法。代码上最难的地方在于考虑下标的存储,入队出队,可以看图解去理解,实际写起来代码还是感觉好难,要多练习才行。map.find是寻找元素,返回该元素的迭代器,否则,返回map.end()的滑动窗口从数组的最左侧移动到数组的最右侧。以累加的形式,找到所有前缀的和,作为哈希表的键,个数为值。两头都可以进行入队出队的操作,就像栈和队列的结合体。

2024-03-05 15:40:13 469

原创 记录刷题中出现的知识点方便复习(五)

这个方法叫做滑动窗口,应该很好理解,最重要的是确定窗口的起始位置,避免重复操作。计算长度就是窗口两个指针间的长度。力扣上一个大佬总结了算法框架,我直接开始背诵并默写。提交之后发现居然是运行时间最短的那一档!,请你找出其中不含有重复字符的。

2024-03-04 11:24:11 202 1

原创 记录刷题中出现的一些知识点方便复习(四)

去掉重复解的我一开始的思路就是得到的所有解,去掉解的重复元素,但是感觉好复杂写不出来,只能在循环的过程中去掉重复的可能性。其中有两个我认为正确的判断语句注释掉了,因为测试的时候不通过,我还没有想明白为什么,有大佬知道的话可以评论区教教孩子。这个题比前边的题目难度高一点,而且应该有更好的解法,但是我想不出来了TuT。3. 为了减少循环次数,将其中不可能出现和为零的情况提前去掉。争取把学过的思路多加思考运用到后面的题目,加油加油!基本写出来找到和为0的情况,重点是想办法。于是有下面测试成功的代码。

2024-03-03 12:44:00 118

原创 记录刷题中出现的一些知识点方便复习(三)

链接:https://leetcode.cn/problems/container-with-most-water/solutions/11491/container-with-most-water-shuang-zhi-zhen-fa-yi-do/看评论区的解析,考虑面积变化的规律,高度取决于较短的一边,改变短板的高度才会有可能增加面积大小,而改变长板的高度,短板不变或者会变小,面积一定不会增加,因此选取每次指向短板指针向内移动,直至两个指针重合,找到面积最大的位置。轴共同构成的容器可以容纳最多的水。

2024-02-29 14:42:18 380

原创 记录刷题中遇见的一些知识点方便复习(二)

测试用例的时候改了好几回,一个是有连续相同值的情况要考虑,一个是只有一个值的时候要考虑。我理解set 跟map的区别就是键值对的区别吧,看了几个例子,好像set就是用键来操作,map就是键和值都可以操作。这个题一开始就想先排序,再查找,结果一看时间复杂度要求,直接就把sort()给pass掉了。这道题解题的核心思路是,在查找连续序列时,不从每一个元素开始,而是判断元素是否已经在序列中,也就是找到该元素的。里面的.insert插入操作就不用说了,相关的有:(既然是无序集合想必插入应该也是无序的吧)

2024-02-29 10:12:14 672

原创 记录刷题中遇见的一些知识点方便复习

查到的其他相关函数:pop_back() //移除最后一个元素clear() //清空所有元素empty() //判断vector是否为空,如果返回true为空erase() // 删除指定元素看评论区还有双指针、哈希表的方法求解,不懂,学会了再补充。

2024-02-28 16:05:05 300

空空如也

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

TA关注的人

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