自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 打卡第十九天

我的代码看起来简洁,但是其实没考虑到BST的特性,我是在递归的过程中把整个树搜素了一遍,来查找是否存在对应值,但是应该利用BST的特性的,如果值小于根节点的值就搜索左边,大于搜索右子树,我选择遍历整个树是考虑到可能一个值小于跟,但是它可能等于右子树的左子树的值,但是我这样想是错误的,如果这样的话,BST是会发生变化的,如果想找比根节点小的树就从左子树找,别找右子树。因为终止条件为数组条件等于1时,所以只有当index>=1才能构建左子树,当end-index大于等于一才能构建右子树。

2023-10-14 03:39:32 36 1

原创 打卡第18天

自己直接用层序搞出来了,听了卡哥的递归的解法,有了启发,自己不会用递归的方法,主要是不知道最大深度应该怎么处理,就是不知道怎么知道此时是最大深度,卡哥用了一个变量来记录深度,通过比较来判断是否是大于最大深度,如果递归的是否发现大于最大深度,那么最大深度就改变成比它大的值,并将当前节点的val作为结果。多重性关联:一个类有多个成员变量是另一个类的类型,uml图用单项箭头表示,拥有一个类的类型的成员变量的指向成员变量类型的类,并标注上1..3类似的字符。

2023-10-13 01:51:47 39

原创 打卡第17天

我的思路对比卡哥显得比较冗余了,根据题目可知平衡二叉树的左右子树的高度差不能超过1,即左右子树的最大高度不能超过1,最大高度我们学过,就用前序遍历,父节点是否的高度差是否超过1,如果不超过就各自遍历其子节点,因为第一次比较就把整棵二叉树遍历了一遍,后续再遍历子节点的话还需要遍历,导致有大量的重复计算,卡哥的思路是,自己做一个设定,如果高度差大于1,就返回-1,父节点如果收到传上来的-1,就继续向上抛-1,否则就返回高度值,这样只需要遍历一次二叉树就可获得结果。

2023-09-25 03:01:13 37 1

原创 打卡第16天

这道题掉进卡哥说的坑里了,原本以为把max改成min就可以,但是题目要求是“最小深度是从根节点到最近叶子节点的最短路径上的节点数量”,叶子节点就是左右子树都为空的节点,如果根节点的左子树为null,右子树不为null,此时按照上诉方法答案是1,这是错误的,因为跟题目要求不符,因此要多一步判断,如果出现这样的情况,取右子树最小深度加1。求深度一般用前序遍历,先便利根节点,再子节点,求高度用后续遍历,先遍历子节点,再回到父节点,为什么这道求深度的题用后续遍历的答案比较多,因为根节点的高度就是最大深度。

2023-09-25 01:42:32 29 1

原创 打卡第14天

只记得层序遍历需要用队列这种数据结构,但是记不清把每层数据放进去后如何判断每层的个数并取出来记不太清晰,主要思路是new一个int值来记录这一层的数量,知道这个数量后按数量遍历取队列的数据,就可以在记录这个数据的同时往队列中塞入这个节点非空情况下的左右子节点,直至把该层的数据取完,并把下层的数据完成插入,这时进入下一层循环,计算队列的size,并根绝size遍历该层的数据同时。

2023-09-22 03:07:36 26 1

原创 打卡第14天

除了最底层没填满,其他位置都要填满,最底层允许为空,但不为空的值都要集中到左边,优先级队列就是完全二叉树。任一节点的左子树与右子树的高度差不超过1的二叉搜索树,所以map的key和set底层存储是有顺序的。##2.顺序存储(数组,某节点的左子节点位置为2*i+1,右子节点位置为2*i+2)左子节点都比父节点小,又节点比父节点大。其节点个数为2的k次方减一,k为树高。##1.链式存储(两个指针的数组)##4.平衡二叉搜索树。##1.深度优先搜索。##2.广度优先搜索。

2023-09-20 01:57:10 28 1

原创 打卡第十三天

还有就是queue没想到用啥就用deque。如果大顶堆,根节点为最大值,但是顶堆每次去除元素时都是从头开始的,最后只能得到频率最小的k个值,为了得到值对应的频率,只能用map进行存储,然后遍历这个map,把遍历到的元素新建int数组后,直接放入queue,如果queue的size大于k,就移除小顶堆最上面的值,因为要求按频率从大到小返回,而小顶堆每次poll都是较小的,跟需要的结果相反,那就i=k-1;i--,通过将结果数组倒序填充,得到最后的答案。

2023-09-20 00:57:37 28 1

原创 打卡第11天

用一个Stack容器来存储遍历到的字符,如果是左括号,就在Stack容器中push对应的右括号,如果是右括号,就判断当前Stack容器是否为空,如果为空返回false;如果pop出来的跟目前遍历得到的不符,返回false,最后看是否Stack是否为空,为空返回true,否则返回false。这道题想到了用Stack来存数据,但是因为要求输出是string,导致还要遍历一下转成String,复杂度增加,官方用的用stringBuilder模拟栈,复杂度下降了很多。

2023-09-17 02:31:37 25 1

原创 打卡第八天

最简单的双指针。

2023-09-17 01:35:20 26 1

原创 打卡第十天

#232. 用栈实现队列比较虚这种自己设计数据结构的题,以后还是要多加练习的,自己还有这道题的印象,但是理解的不深,导致自己觉得这种思路有问题,自己知道pop是通过第一个栈的元素放到第二个栈里面,用第二个栈的pop方法来实现的,觉得如果把第一个栈的元素全都放到第二个栈,如果第一个栈再放进元素的话,再对第一个栈pop,需要把第一个栈的元素放到第二个栈,但是此时pop的方法是不正确的,导致自己对这个思路有怀疑,正确的思路应该是,如果第二次pop的话,先判断第二个栈是否为空,如果为空就复制,如果不为空,就直接对第

2023-09-16 00:43:16 26 1

原创 打卡第九天

这个题的主要思路就是前缀匹配,基于这样一个事实,就是如果组成的字符字串长度为n',字符串总长度为n,那么[n',n]范围内,j从n开始遍历,s.charAt(j-n)一定等于s.charAt(j),如果存在这样的n',那么就可以认定可由字串构成。这个直接暴力解决了,定义一个和第二个字符串一样的窗口,在第一个字符串上移动的同时跟第二个字符串匹配,如果出现一个不同就break,如果全部相同就return。

2023-09-15 02:10:29 22

原创 打卡第八天

原本以为很难,就用了笨方法,结果答案就是笨方法,唯一比较容易入坑的一点是,刚开始用的list来记录两个数组的和的相反数,然后再遍历令两个数组和,并判断list中是否存在这个目标和,如果有,元组数加一,结果显示,这种方法得到的元组数目比真实的要少,后来想了一下,如果原来的list中存在多个相同的目标,其实每出现一次这个目标都应该元组数目加一,因此应该是元组数加上目标和的数目,而不是仅仅加一,后期用hashmap的value记录数目,key记录和,最后解决了这个题。

2023-09-13 01:26:29 16

原创 打卡第七天

一次遍历,将数组的值做key,下标做value,如果map中包含target-num[i]就结束,返回i和map.get(target-num[i]),如果不包含就在map里面填目前遍历得到的数组值和坐标。通过数组下标标记字母,数组值计算对应字母出现的次数,遍历两个字符串,一个出现一次就对应位置加一,一个对应减1,最后数组全为0则为真。这道题首先想到的是递归,但是写完后发现,无限循环的情况没办法解决,最后看了一下题解,使用Set纪录遍历的数,如果出现了重复或者n==1解除循环。HashSet的用法。

2023-09-12 00:25:59 20

原创 打卡第四天

循环遍历条件不能是while(head!=null)因为这样链表长度为奇数时,最后的。

2023-09-10 02:39:56 22 1

原创 打卡第三天链表1

这道题主要容易错的点就是如果头节点是目标值,直接将初始节点设为head是不行的,需要设置为head前面的节点,因此需要new ListNode(0,head),原本自己的思路是设计一条链表,让这个链表通过遍历不断指向不为val的节点,虽然最后做出来了,但是要为最后一个节点值专门为val做处理,但其他大佬给了更简洁的思路,遍历使用cur.next=cur.next.next的思路来删除目标值节点,确实简便很多。这个题没做过类似的没啥思路//todo。

2023-09-09 01:46:15 56 1

原创 打卡第二天

有印象但是忘记了,看了一半的题解,然后ac了,这个题主要是要确定好边界条件,不是两个端点而是四个端点(上下左右),然后根据数组不断增加的方向,先数组上边界从左到右,然后数组右边界从上到下,下边界从右到左,左边界从下到上,四个方向分别便利,注意便利时横坐标和纵坐标哪个是不变的,然后需要注意遍历完,哪个端点需要变化以应对下轮遍历。思考:数组连续两次的操作,如果一步是将数组坐标值参与运算,下面一步是移动坐标,可将该两步合并成一步,即:max=nums[left];

2023-09-08 01:51:54 115 1

原创 打卡第一天

其思想就是通过让right指针去探路,一旦发现不等于var的值,就让lef指针来记录,等于就跳过,最后返回长度时直接返回left值,而不是left+1,因为每次不等var,left都会+1,已经抵消了初始下表为0,而要求返回长度的影响,这个题跟删除某链表的倒数第n个节点优点类似,left和right都是在同一侧,而不是两端的端点。以后只用right=长度减一,当区间我们设置为mid=left+1时,此时可能left==right,因此循环条件要设置为left<=right;

2023-09-07 00:51:48 210 1

原创 redis0526

事务127.0.0.1:6379> muti(error) ERR unknown command 'muti'127.0.0.1:6379> multiOK127.0.0.1:6379> set k1 value1QUEUED127.0.0.1:6379> set k2 value2QUEUED127.0.0.1:6379> exec1) OK2) OK127.0.0.1:6379> keys *1) "name"2) "k2"3) "k

2022-05-26 12:01:24 217

原创 关于正则化的理解

在正则化的理解过程中,通过让更多的权重值为零,引起X权重值为零而使得部分特征无意义,特征减少,相关参数减少,自然减少了过拟合的风险,我感觉比较矛盾的一点是,虽然想办法使得非零数减少,但是通过梯度下降,参数w会不断更新,原先设置成零的部分权重也可能会变为非零值,这样根本没意义,后来思考了一下,自己陷入了误区,正则化并非将某些参数设置为零,而是使得最后的函数W值非零数更少,最后使得部分参数对整体的函数影响比较小甚至可以忽略,这样就变相简化了函数,使得最终的函数没那么复杂。...

2021-10-18 10:56:43 75

空空如也

空空如也

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

TA关注的人

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