自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录之二叉树层序遍历

本题两个循环条件,一个是队列不为空,另一个是当前层的元素个数。难点:循环判断条件的确立,需要什么一个条件进入循环。1、使用队列(queue)来模拟层序遍历。

2023-10-28 10:45:26 20

原创 代码随想录之《二叉树》迭代遍历(统一迭代法)

栈这种先入后出的思考方式是就很像计算机,如果遍历到一个元素是要在最后一个输出的,那就将他压入栈中,最后才输出。1、记住如果你想计算机按照你的思路去输出元素,一定要按照计算机的思考方式。2、将要处理的节点放入栈后,加一个空指针标记他(往栈里加入NULL)。

2023-10-26 09:08:35 20

原创 代码随想录之二叉树《前中后序遍历》

3、按照单层递归的逻辑,比如前序遍历就是“中左右”。1、确定递归函数返回值和参数。

2023-10-24 09:39:56 20

原创 代码随想录之二叉树理论基础

(1)二叉树的种类:1、满二叉树 2、完全二叉树 3、平衡二叉树 4、平衡二叉搜索树。(2)二叉树的存储方式:链式存储和线性存储。(3)遍历方式:前中后序遍历。

2023-10-24 08:37:49 28

原创 代码随想录之队列《滑动窗口最大值》

往单调队列插入元素——push,因为单调队列强调单调递增或递减,本题是单调递增,所以要判断数组的值,如果要插入的值大于队列入口元素的值,弹出入口元素,直到push的数值小于等于队列入口元素为止。弹出元素——pop:比较队列出口元素是否等于pop值,如果相等,则弹出来。方法:维护一个单调队列,这个单调队列是单调递增或单调递减。目的:最终输出每次滑动窗口的最大值。这是重点,本题就围绕这个思路展开。

2023-10-19 09:55:26 12

原创 代码随想录之栈《逆波兰表达式求值》

如果使用人类常用的中缀表达式:(2+1)x3,计算机需要对符号进行优先级判断,对于计算机来说是有点麻烦的。所以计算机利用栈的特性,这种后缀表达式对计算机的开销也小很多。在进行算术运算时,["2","1","+","3","*"],这种后缀表达式对于计算机的思考是非常友好的。这道题很好的理解计算机的思考方式。

2023-10-18 09:11:41 20 1

原创 代码随想录之栈《删除字符串中所有相邻重复项》

back:输出字符串最后一个元素,但不移出。重点:完全匹配类的题目可以第一时间想到栈。push_back:往字符串后面插入元素。pop_back:移出字符串最后一个元素。第二种解法:用字符串模拟栈的操作。第一种解法:直接用栈。

2023-10-17 08:31:41 28 1

原创 代码随想录之栈《有效的括号》

1、审题错误,以为是只要找到匹配的括号就好,原来是要括号完整的匹配,比如“()、[]、{}”2、完全匹配类的题目可以用栈来解决,利用先进后出的天然优势。empty:判断栈是否为空。push:往栈插入元素。top:输出栈顶元素。pop:弹出栈顶元素。

2023-10-14 10:58:24 19 1

原创 代码随想录之《队列模拟栈》

用一个队列模拟栈,比如给出出栈的第一个元素,模拟出栈行为,就是给出队列最后一个进的元素。将最后一个元素前面的元素全部弹出并添加到最后一个元素后面,这样就模拟了出栈。1、队列特性:先进先出;

2023-10-14 10:14:36 26 1

原创 代码随想录之《用栈实现队列》

栈是先进后出结构,队列是先进先出。两者因为其结构的特性,不能实现遍历功能,也就不提供迭代器完成遍历。栈和队列都不是容器,都是利用底层容器来完成其行为,所以栈和队列都是容器适配器。用两个栈实现队列,一个栈是入栈,另一个是出栈。本题考察的是对栈和队列的特性的掌握。empty():判断是否为空。

2023-10-08 08:42:08 19 1

原创 代码随想录之《链表相交》

而且,一开始判断条件为(curA->val==curB->val),这样会有测试用例不通过。因为本题判断的是节点本身是否相等,而不是节点的值是否相等。一开始做这题,我没有给lenA和lenB赋初始值,导致出现runtime error。

2023-10-04 10:18:39 19 1

原创 代码随想录之《两两交换链表中的节点》

对链表节点操作之前,一定要先创建临时变量保存链表元素,比如我想交换有三个元素的链表,在交换前两个元素时,一定要保存第三个元素。如果不保存,会出现空指针异常,交换后的节点没法指向第三个节点,因为链表的交换操作就像一个断链然后又接链的一个过程。

2023-09-30 10:53:28 86

原创 代码随想录之《反转链表》

问题:循环里的条件可以为cur,当cur指向NULL时,退出循环。在原链表进行翻转操作,双指针解法。

2023-09-27 09:07:13 24 1

原创 代码随想录之链表《移除链表元素》

刷第二遍了,这次没看视频,但是看了会网站的文章再刷。

2023-09-26 09:01:57 24 1

原创 代码随想录之数组《螺旋数组||》

解题关键:坚持一个循环原则,比如左闭右开或者左闭右闭。如果我来写这道题,变量的创建应该是我的难点。

2023-09-24 08:56:58 19 1

原创 代码随想录之《有序数组的平方》

这题暴力法很简单,不多赘述。

2023-09-21 09:13:35 17

原创 代码随想录之双指针《移除元素》

从题目我们要想到数组的特性:1、数组在内存中的地址是连续的,也就是说,当我们增加或删除元素时,难免要移动数组中其他元素。比如12345,我要删除3,就要把45都前移一位。所以数组中的元素是不能删除的,而是覆盖。删除操作其实就是把要删除的元素覆盖掉,数组大小仍然不变。使用erase可以直接实现删除元素的目的,但本题直接erase就能ac,显然不是考察数组的目的。

2023-09-17 11:07:13 24 1

原创 代码随想录之哈希表《三数之和》

【代码】代码随想录之哈希表《三数之和》

2023-09-15 10:37:20 19 1

原创 代码随想录之哈希表《赎金信》

ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ransomNote中使用一次。分析题目:判断一个字符是否出现在另一个集合中,就可以考虑用哈希表。题目中“判断ransomNote能不能由magazine里面的字符构成。”跟判断字母异位那题很相似,只不过这个要查找多个字符。

2023-09-13 09:14:53 17

原创 代码随想录之哈希表《两数之和》

原题:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台。

2023-09-09 09:07:23 15

原创 代码随想录之哈希表《快乐数》

但是判断是否为快乐数的过程中,我们需要查找是否有重复元素出现过,有则返回false。unordered_set能解决这个问题。一旦读题发现,一个元素是否出现在集合里,就要考虑用哈希法了。前面的总结提到过,使用数组查找元素,要尽可能在一个确定的范围内,本题n值一直变化,且变化的范围太大,数组面对这么大差值的元素,需要开辟很多控件存放元素,造成极大的空间浪费,属实没必要。为什么用unordered_set呢?题目中也没有要求查找元素呀。

2023-09-07 09:26:15 14 1

原创 代码随想录之哈希表《两个数组的交集》

因为本题没有限制元素的大小,数值大小的限制,而上一题“有效的字母异位词”中,元素大小限制在了26位小写字母,所以使用数组会合适。但是本题没有限制大小,如果数值之间相差较大,比如“0,5,10000”,数组需要开辟到10000个内存去存储这些数,空间浪费极大。从读写效率角度来看,unordered_set既不对数据进行排序,也不会数据重复,读写效率最高。总结两个字就是:“去重”,前两种数据结构允许有重复元素输出,而unordered_set会自动帮你去重,多个相同元素存在时只存放一个元素。

2023-09-06 09:03:03 21 1

原创 leetcode 剑指offer 05、替换空格

从后向前操作的好处:1、不用像从前向后,每次都得给数组开辟新的空间,每次添加元素,添加元素后面的数组中的元素都得往后移位。数组填充类问题,可以预先给数组扩容到填充数组后的大小,用resize函数,然后从后向前操作。解题方法:双指针法,从后向前替换空格。2、不用申请新数组。

2023-08-02 21:26:22 26

空空如也

空空如也

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

TA关注的人

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