自定义博客皮肤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)
  • 收藏
  • 关注

原创 《算法通关村——如何使用中序和后序遍历来恢复一棵二叉树》

思路:后序遍历最后处理根节点,所以可以变成124--5--786,中序遍历变成142--5--768,显而易见最后就可以还原,1--4--2--5--7--6--8。接下来找1的左右孩子,显而易见为2,9,可化简为3486752--2--1--8--10 11 15 13 14 12。由后序可知1位最上面的根节点,由中序就可以这样化简3486752--1--10 9 11 15 13 14 12。后序遍历根节点在其左右结点之后。

2023-09-23 11:42:54 94 1

原创 《算法通关村——n数之和问题解析》

本题思路:nums数组排好序,首先把nums[first]看成一部分,nums[second]+nums[third]看成一部分target=-nums[first],这样我们就可以依照循环,规定first,second,third索引先后顺序,退出循环条件,最后找到nums[second]+nums[third]=-nums[first]处返回即可。遍历nums数组,依次put到hashtab里,中途判断hashtab里是否含有可以使加上nums[i]等于target的值,如果有get其下标并返回。

2023-09-23 11:05:13 103 1

原创 《算法通关村——队列问题解析》

队列的特点是节点的排队次序和出队次序按入队时间先后确定,即先入队者先出队,后入队者后出队,也就是我们常说的先进先出(FIFO)。

2023-09-14 17:00:07 100 1

原创 《算法通关村——括号匹配问题解析》

最后返回stack.iseEmpty(),stack为空,就说明全部匹配。我们只对key进行入栈,遇到非key的字符,就与栈顶元素进行比较,成功匹配后,此时stack就是空,匹配不成功,就返回false了。map.get()返回value就可以进行比较map中原定的key--vlaue匹配。

2023-09-06 17:56:58 90 1

原创 《算法通关村——如何基于链表实现栈》

【代码】《算法通关村——如何基于链表实现栈》

2023-09-06 17:01:41 64 1

原创 《算法通关村——双指针的妙用》

left,right两个从数组头和尾分别开始走,当nums[left]等于val并且nums[right]不等于right的时候交换数组中两个位置的元素,否则都相向遍历,直到left==right,遍历完成,最后返回的left就是删除val元素后nums数组剩余元素的个数。为什么right要加一?当nums[left]==val时,我们用nums[right]覆盖nums[left],并使right往前移一位, 因为开始right是作为索引存在,最后要返回的是剩余元素的个数。

2023-09-06 16:17:05 29 1

原创 《算法通关村——不简单的数组增删改查》

2) 为什么把index赋值给size,有多种情况,后面我们进行for循环寻找element是否小于arr[i],如果找到了才会赋值i给index,如果循环结束还没找到,那一定是element比arr里的所有元素都大,所以会插入最后一个,如果不是size会破坏原数组的其他值。首先设置标志index,遍历数组arr,找到要删除元素下标,然后判断是否找到要删除元素,找到了就进入for循环从删除元素的下一个元素开始集体前移,size--,返回size,通过返回的size值就可判断是否删除成功。

2023-09-02 15:50:32 44

原创 《算法通关村第二关——指定区间反转问题解析》

第二个for循环中right-left为头插法left结点后插入left结点前的个数,之后更新next结点的位置,cur一直是node(2),next在不断变化,循环不断使left后的节点插入left前头。第二个for循环根据pre找到rightNode,确定反转范围,再把rightNode.next暂存到后缀结点succ,把rightNode.next设为null,就可以反转链表进行连接了。cur指向pre的下一个结点,next指向cur的下一个结点。

2023-08-31 17:17:57 125

原创 《算法通关村第二关——终于学会链表反转了》

接下来进入while循环,cur.next=ans.next发挥作用,此时ans.next还是head/node(1),cur.next是node(2),node(2)尾链接node(1)头。ans.next=cur,ans尾链接cur头,cur继续往下走进入循环,最后cur到走完尾结点,跳出循环,返回ans.next。cur=head时进入while循环,使ans.next=head,ans结点后链接head,cur.next=prev使原本cur指向cur.next的箭头反转,指向prev,

2023-08-30 22:37:35 148

原创 《算法通关村第一关——链表之经典问题之合并有序链表》

a-1,确保pre1指向a的前一个结点,而j!=b同样,post1暂时指向b结点以前的位置,之后post1=post1.next,post1指向list1后半部分的头结点。在while循环内if-else判断进行了优化,如list1={1,2,5,8},list2={3,5}两个有序序列进行合并,当合并到list1的结点5时list1.val==list2.val,我们先将list1的结点5合并,list1和list2连个链表,删除list1中a到b的结点,并把list2插入到list1删除部分。

2023-08-29 22:26:47 202

原创 《算法通关村第一关——链表青铜挑战笔记》

插入的是中间结点,我们可以遍历链表,根据pos找到要插入位置的node,创建node结点的前驱结点preNode,nodeInsert和node进行双向绑定,preNode和nodeInsert之间进行双向绑定,于是nodeInsert就插入到preNode和node之间了。我们找到删除结点的前驱结点即可,删除结点是node(50),前驱结点是node(7),我们可以使node(7).next=null,node(40)不可达,jvm就自动回收了。

2023-08-29 13:48:21 231

空空如也

空空如也

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

TA关注的人

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