自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树 part05

看到题目的第一想法:将最大值从数组拿出作为根节点,同时将数组由最大值的索引处切分成两个数组分别进行排序,然后用左支遍历右指针。

2024-08-12 14:34:58 172

原创 二叉树part03

看到题目的第一想法:深度或层序遍历都可,不过要加一个判断条件,如果cur->left不为空,则将该指针指向的数值存入动态数组中,最后将动态数组的数相加。看到题目的第一想法:用类似层序遍历的方法分别遍历root的左与右并记录深度,最后比较深度差大于一的话就返回false。看到题目的第一想法:深度或层序遍历都可,只要遇到节点且判断左右只要一个不为空就count++看到题目的第一想法:用类似深度优先搜索的方法去遍历用字符串操作方法相加;

2024-08-12 13:03:56 239

原创 二叉树02

看到题目的第一想法:选择前序遍历,比较左右指针指向的值是否相等;但是并不只是左右指针对称就行,是左右树是否对称,那就可以使用层序遍历,看每一层的数是否是呈中心对称的。看到题目的第一想法:可以用一个数组来存储每次遍历的节点数,采取前序遍历,每次递归都deep+1,返回条件是指向的指针为空,最后找到数组中最大的值作为二叉树的最大深度。看到题目的第一想法:本质上节点的左指针和右指针所指的值进行交换,可以通过递归实现。看完代码随想录的想法:没有想到还能进行指针交换。看到题目的第一想法:前序遍历。

2024-08-11 20:02:13 144

原创 代码随想录算法训练营第十二天

【代码】代码随想录算法训练营第十二天。

2024-08-11 14:42:30 211

原创 代码随想录算法训练营第十天 150. 逆波兰表达式求值 239. 滑动窗口最大值

看到题目的第一想法:双指针right=left+k;用left来遍历到size-k-1,构建一个数组来存放每次的最大值,这里应该是不让用max方法,就两数比较大的那个再跟剩下的一个数比较,大的那个存入数组,没有看出这个题的难点在哪,也不知道哪里需要使用栈来实现。看到题目的第一想法:我觉得可以用哈希法来做,遍历数组,用set的key存数,用value来存出现的次数,只要出现就++,最后循环找出set中最大值所对应的key输入result数组同时在剔除这个最大的键值对,循环次数为k。

2024-08-10 18:03:07 299

原创 代码随想录算法训练营第九天 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项

看到题目的第一想法:首先存入一个字符到栈中然后判断i++所指的字符是否与存入的字符相等这里用到了栈的top方法,如果相等就将栈内的top弹出,进行循环遍历这个字符串,建立一个字符串,将栈中最后剩下的字符顺序放入所建字符串中,最后return。看到题目的第一想法:用两个栈实现先入先出队列,就是先把数据放入第一栈,然后再将数据转入第二个栈。看到题目的第一想法:会想到字符串类型转换成int类型,相应的括号应该是相邻的。看完代码随想录的想法:思路一样但是关于栈类的相关方法的使用第一次见。看到题目的第一想法:没有。

2024-08-02 22:45:38 270

原创 代码随想录算法训练营第八天 151.翻转字符串里的单词

看到题目的第一想法:双指针来从字符串的两头遍历字符串,用if识别' ',用continue去重,建立两个字符串容器来分别放置两个单词,在遇到‘ '。看到题目的第一想法:同上一题自己写一个reverse函数,然后根据给定的正整数k将字符串划分为两块,分别进行翻转,然后再整体进行翻转。看完代码随想录的想法:分三步是我没有想到的,1 去掉多余的' ';看完代码随想录的想法:思路一样不过随想录用的是先整体翻转再各自翻转。且用了库函数没有自己构建反转函数。

2024-08-01 23:24:06 184

原创 代码随想录算法训练营第七天 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字

while (cin >> s)按数据流读入的字符串,以空格作为分割,如果读入的是2sf23这样一个字符串的话这个while只循环了一次;看完代码随想录后的想法:for (initialization(循环的初始化);看到题目的第一想法: 需要先size判断size除以2k的值作为最外层循环的次数,如果小于k则如第一题一样进行反转size个,如果大于k就直接如第一题的方法反转k个。看到题目的第一想法:先size数组的大小,双指针一个从开头一个从末尾进行缩紧遍历用while条件是left

2024-08-01 16:27:12 265

原创 代码随想录算法训练营第六天 454. 四数相加 II 383. 赎金信 15. 三数之和 18. 四数之和

看到题目的第一想法:判断第一个字符串能否由第二个字符串里的字符构成就是要判断是否第二个字符串中含有所有的第一个字符串中的字母,且要考虑重复问题,因为每个字符只能使用一次。看到题目的第一想法:不重复,说明需要去重,想要用三数之和时用到的双指针类似思想的话需要四个指针,缩紧方向不好确定;因此想要用哈希,首先时用sort排序目的时方便去重,对半分,将a b存入哈希,用i=0 j=i+1作为初始化,去重操作如上题,然后后面的c d用双指针分别指向两端进行缩紧和判断操作。会出现溢出,long型是64位的;

2024-08-01 14:02:04 294

原创 代码随想录算法训练营第五天 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

思路中关于判断什么时候跳出无限循环的问题不对,这一点也是解题的关键,但我觉得用除十取整作是否为零为跳出的判断条件是可行的。在写代码过程中发现自己的判断错误,对于例子7会出现循环平方相加等于一的情况,所以我的判断条件是不成立的,因此判断条件应该为是否平方和出现重复,则用哈希进行判断。首先需要对数进行除十取余的操作,然后依次存入一个map,每次循环都判断取整是否为0,如果为0则终止循环进行平方相加 问题1:纠结是使用有序集合(即有重复的集合)还是用map。的区别,可看出c与c++的区别,类的优点。

2024-07-16 11:04:30 382

原创 总结:二叉树

优点:相比线性数据结构,如数组、链表,其查找、插入、删除更高效。层序遍历:一层一层走 (广度优先)前序遍历:根左右,遍历(深度优先)中序遍历:左根右,遍历(深度优先)后序遍历:左右根,遍历(深度优先)

2024-07-15 16:20:35 110

原创 代码随想录算法训练营第四天 |LeetCode 24.两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交

循环嵌套,先遍历得到两个链表的大小,大的作为外层循环,小的作为内层循环,外层循环存入next的地址然后和内层遍历进行比较,如果地址一样就return该节点的地址。有很多要注意的细节点,程序终止的判断条件,要分奇偶,且要注意书写顺序避免空指针异常;两个节点的操作作为一个循环体,需要进行的操作依次有:存第二个节点next的地址,第二个节点指向第一个节点的地址,第一个节点指向暂存的地址。引入虚拟指针,先遍历链表计数得到链表节点的个数,然后再计算出倒数第n个节点是正数第几个结点,再次进行遍历,然后用删除操作。

2024-05-31 22:23:51 302 1

原创 代码随想录算法训练营第三天 |LeetCode 203.移除链表元素 707.设计链表 206.反转链表

实现一个类,包括对象的初始化,get通过索引查找链表中的值,addAtHead在表头插入新的结点,addAtTail在表尾添加新的节点,addAtIndex在想要的索引所指节点的前面插入一个节点,deleteAtIndex删除想要的索引所指向的节点;构造一个新的数组,对链表进行遍历依次将链表中的值填入数组,然后再次用类似修改链表的值的方式依次遍历填入数;这里的一个问题是给的只是链表的表头地址,所以在建立一个可以刚好容纳链表内的数的数组需要先遍历链表来获得链表的大小。在插入新节点的时候注意指向的顺序;

2024-05-11 16:51:15 320 3

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

看到题目的第一想法:分两步,先全部平方,再做排序;一个for循环来平方;一个嵌套双for来做排序,利用两个int变量作为存储low和hig并交换的工具。看到题目的第一想法:双指针(fast slow)做滑动窗口,用双for循环嵌套;用int型的lenlow来存储最小长度。看到题目的第一想法:先生成一个n维矩阵,然后按照先行加再列加再行减,但加后再减这种需要不同的判断条件实现循环并不好写。

2024-05-09 21:30:08 247 2

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

看完代码随想录之后的想法 :双指针,快慢指针,一个遍历查找,一个记录需要删除的数的标;逆向思维(我想的是if用==val,而这个选择了对!while循环,跳出条件为找出值或是没有找到(-1or>数组长度);判断语句为与target比大小。看完代码随想录之后的想法 :用双指针做滑动窗口;注意指针与mid的关系,不小心就会一直while;:利用指针做循环遍历;

2024-05-08 15:31:21 282 3

空空如也

空空如也

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

TA关注的人

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