
题目讲解
文章平均质量分 76
在线OJ题的讲解
只是雪豹
我是咸鱼
展开
-
二叉搜索树在线OJ题讲解
本题是根据前序和中序来构造二叉树,我们知道前序的第一个节点就是二叉树的根节点,而中序中根节点左边的就是左子树,右边为右子树,然后再遍历前序第二个节点,再次带入中序,前序的“根节点”能够将中序分为两个区间,分为区间后我们再递归两个区间。如果root的左孩子节点或者root的右孩子节点不为空的话,就要把root的左孩子节点的val用括号括起来,就算左孩子为空这个括号也不能省略。就比如节点2他的右孩子节点是空的,所以那个括号就要省略,4和3的两个括号都省略,就可以得到最后的结果了。原创 2024-02-28 22:00:53 · 1153 阅读 · 5 评论 -
二叉树在线OJ
然后递归newnode的左子树根节点,*(count)++(count传的是地址,所以记得解引用),随后递归右子树根节点即可,最后返回newnode,就是二叉树的根节点。当两个子树都不为空时判断两个子树的根节点是否相等,不相等直接返回false,然后递归左子树和右子树的根节点。当数组的首元素为#或者“\0”,即二叉树没有根节点,为空树,直接接返回。当左子树的根节点和右子树的根节点不相等时只返回false。左子树和右子树相同,左子树的左子树后右子树的右子树相同。同时左子树的子树和右子树的子树也要同时递归。原创 2023-12-03 16:49:15 · 850 阅读 · 52 评论 -
单链表在线OJ题二(详解+图解)
如果当前节点cur的值与其当前节点的next的所存储的值相等(且cur的next不为空),cur就变成cur的next,然后用while循环进行判断,如果cur的val与cur的next的val相等且cur的next不为空,就然后cur往后移动,直到遇到不相同的情况,跳出循环后cur还要记得移动到cur的next;本题的意思很简单,就是一个判断链表是否有环的问题,如果有环就返回那个节点,看图就明白了,就是最后一个节点的next会连接到前面的节点,就是有环。原创 2023-11-22 16:50:37 · 523 阅读 · 37 评论 -
单链表在线OJ题(详解+图解)
我们可以直接使用while循环,并且使用双指针的方法,当这个当前节点的值与value相等时,我们就可以使用我们存储的prev(也就是cur前面一个节点)来删除当前cur节点,令prev的next等于cur的next,同时cur也要记得往后移动,while循环的终止条件就是当cur为空时就不进去,此时prev就时链表的尾节点,函数最终返回的依然是head节点。当head不为空时,且head所存放的值和val相等时,就直接可以将head往后移动。原创 2023-11-19 16:07:48 · 860 阅读 · 44 评论 -
顺序表在线OJ题(详解+图解)
nums[dst],nums[1](也就是nums[++dst])就等于nums[src],然后dst和src依次++,如果nums[src]=nums[dst]的话,src就直接++,dst不用++本题是将两个有序的数组最后合并为一个有序数组,然后返回,我们可以先将数组nums2放入nums1中,然后再将nums1进行一次排序,然后返回nums1。我们的函数参数有num数组,就是我们输入的数组,numsize是num数组的元素个数,k是加上去的值,returnsize是最后加上k后的数组。原创 2023-11-16 15:16:50 · 592 阅读 · 52 评论 -
找出数组里的两个单身狗(异或的方法)
例如找最低位,那么这一位是1的有1 3 1,是0的有2 4 2,由于是利用异或结果为1的某一位分的组,所以两个待查询数字一定分别在两组中。首先定义一个数ret为0,让它和数组中的每一个元素进行异或操作,最后得到的就是数组中只出现一次的数字(sz为数组的元素个数)。最后得出的pnum1就是末位为1的单身狗,pnum2就是末位为0的单身狗。pnum1用于异或末位为1的数字,pnum2用于异或末位为2的数字。有数组的元素是:1,2,3,4,5,1,2,3,4,6。原创 2023-11-03 23:10:06 · 523 阅读 · 24 评论 -
冒泡排序的快速排序——qsort函数的模拟实现
上一期我们留下了一个题目:判断一个字符串是否是另一个字符串左旋后的字符:其实我们只要将原字符串用memcpy加到原字符串的后面构成一个新的字符串,只要你给出的字符串在这个新的字符串里面(用strstr函数),那么他就是这个字符串左旋后的字符串例如:BCDA如果在下面的这个字符串中,所以是左旋后的字符串。原创 2023-11-01 23:05:23 · 505 阅读 · 28 评论 -
实现一个函数可以左旋字符串中的k个字符包学会!(两种办法)
我们需要左旋k个字符,那我们是不是就可以创建一个新的空间,先将后面的len-k个字符放进这个新的空间,然后再将前面的k个字符放进去,就可以实现字符串的左旋了呢?当left<right的时候才逆序,等于的时候不用逆序,记住,swap函数里面的参数我们是传址调用,所以要用取地址符号&取出其字符的地址。方法一,我们可以将前k个字符先逆序,然后再将后面的字符逆序,再将整体逆序,就可以得出左旋k个字符后的字符串。然后再将temp中的内容拷贝到arr里,就实现了字符串的左旋了。原创 2023-10-31 23:13:57 · 546 阅读 · 6 评论