自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。for循环遍历胃口,用if判断当前胃口能否被饼干满足,如果满足指针便宜,结果自增。先 遍历胃口,因为胃口可能不回被满足,但是需要全部遍历,而内层是匹配条件了才移动。针对只有一个元素的情况下,直接返回。不知道怎么梳理该考虑的情况。

2023-10-04 00:51:25 49 1

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

首先将根节点入栈,栈非空情况下循环:循环内,先pop元素存入结果,再push进当前出栈元素的非空右左节点(相当于一种递归,以当前节点开始,向下找寻孩子,直到叶子结点)。用循环存储栈的方式,代替了递归。从根节点开始,一路向左(push,cur=cur.left),直到找到最左的叶子结点,出栈,存入结果,cur=cur.right。迭代:中间节点入栈,找左节点,弹左节点,弹中间节点,找右节点。中间先入栈,找到左,出栈,中出栈,找到右,右入栈,右出栈。递归:不断递归左节点,存储中间结点,递归右节点。

2023-09-26 00:49:18 53

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

针对左括号,对应在栈中放入右括号;对右括号判断是否空栈,是否匹配,不匹配和空栈情况直接return false;拿到运算符后,取前两个相邻数据做对应运算,将结果入栈,再入栈后续运算符,重复这个操作。减法和除法由于不满足交换律,需要特殊处理,保证元素的运算顺序。字符串相等的判断“+”.equals(s),单独判断四种运算符,因为运算操作不同。遍历字符串,字符与栈顶元素相同时,执行出栈;在栈为空,或不配的情况下,执行入栈。可以使用对应的pop,push,peek方法。栈中最后剩余的元素就是不重复的元素。

2023-09-25 00:18:45 49 1

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

因为队列先进先出,只要将先出的元素存起来,清空队列后,再放入新元素,再加载之前的元素,即可实现后进先出。使用单端队列:先放入元素,统计当前队列的size,遍历size-->1,出队列再尾部加入,实现倒序。非空,则先将其元素存入q2,再q1中添加元素后,再顺序添加q2元素。双端队列方法:addLast();使用两个队列:保证q1的顺序是栈的顺序,借助q2存储之前的元素,实现顺序颠倒。q2中放入1,q1中添加2,q1中再放入q2弹出的1。,再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。

2023-09-24 12:06:33 38 1

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

可以使用stringbuilder实现,通过charAt(index)获取字符串中的字符,判断是否为空格,如果是,直接在strbuilder中添加“%20”,不是直接添加原字符。或使用双指针法,先遍历判断是否为空格,如果是,生成一段空格的stringbuilder空间(长度为为空格两倍),使用s+=str.toString()直接实现扩容。无论start在哪,至少有一次反转,统一处理firstK部分,执行反转;源字符串从尾部开始遍历,判断单词位置,结果字符串从头部开始添加。注意,在尾部截取的过程中,

2023-09-22 00:47:07 22 1

原创 代码随想录算法训练营第六天| 哈希表

map.containsKey()查询key是否存在,map.get()按key取值,map.put(key,val)存入数据。计算元素对应的索引,执行+1操作,遍历字符串t时,元素所在位置对应-1,最后判断是否有不为零的元素。集合转为数组set.stream().mapToInt(x->x).toArray();查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希。set.add()添加元素,set.contains()判断元素是否存在。常见的三种哈希结构:数组、set、map。

2023-09-21 23:29:39 23

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

3.在交换过程中,为了更好的表示,可以设cur为最前端,first为第二个元素,second为第三个元素。在处理末尾对齐时,为了统一代码操作,可以通过交换的方式,使得a所对应的链表总是长的。,这样就可以很好的处理空链表、只有一个元素、元素长度不满足交换时的情况。4.交换过程中,需要设置临时节点,保存第三个节点后面的那个节点。,slow正好指向要删除的节点的前一个节点,即可进行删除。注意,控制快慢指针相隔N个节点,快指针要走N+1步。二、删除链表的倒数第N个节点。一、两两交换链表中的节点。

2023-09-06 11:11:59 28 1

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

增加统一用index来实现,需要先遍历找到pre节点,创建新节点,pre.next指向新节点。注意初始化pre节点的时候,要定义为空指针,否则头处会有值,导致返回错误。底层是一个单链表或双链表,在此基础上实现设计的链表和相应的功能。遍历,判断节点值相等时,执行删除(pre指向cur.next)值不相等时,保留当前节点,pre=cur。注意需要对index进行判断。单链表增删操作,通常使用。

2023-08-31 22:50:22 59

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

为了满足赋值需要,另维护一个start变量从0开始,表明每一圈的起始位置。一圈要画四条边,以圈数为循环条件,每条边坚持左闭右开,每一圈每一条边画的终点为n-当前圈数,内圈的起点缩进。一段子数组,还是由起始位置和终止位置决定的,只是通过和维系终止位置和起始位置的关系,进而可以减少一次遍历。当窗口内的和大于等于s时,窗口就该缩短了,即起始位置向右移动。数组的平方最大值就在数组的两端,使用双指针法。针对n为奇数的情况,需单独对中心点赋值。窗口内是满足和大于等于s的连续子数组。先在和中减去起始位置的值,再左移。

2023-08-24 22:47:57 153 1

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

2.假设目标元素在[left,right)(左闭右开区间)内,left==right是无意义的,此时while条件为left<right。左右索引移动时,左边可以直接跳过中间值,而右边需等于中间值,保证在区间(while条件限制的)内,如果存在目标值可以找到,即left = tmp + 1和right = tmp。1.假设目标元素在[left,right](左闭又闭区间)内,left==right是有意义的,此时while条件为left<=right。索引值表示位置,数组名[索引值]才能取到对应元素。

2023-08-23 23:32:41 216 1

原创 JDK8下载安装

jdk8下载安装

2022-12-07 17:35:01 13094 2

空空如也

空空如也

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

TA关注的人

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