- 博客(24)
- 收藏
- 关注
原创 笔试题:有n个餐厅和m个外卖员,每个餐厅在某个时间点会产生一个外卖订单,这些订单都有产生时间,所需送达时间和优先级。外卖员在空闲的时候会选择最优的订单来配送,直到所有订单都被送达。
Override// 优先级高的优先// 所需送达时间短的优先// 产生时间早的优先} else {// 餐厅编号小的优先});
2024-08-13 00:42:58
1190
原创 Leetcode96. 不同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。
2024-07-19 16:27:21
477
1
原创 代码随想录刷题训练营|贪心算法|Leetcode45/55跳跃游戏
● 此时i=2=curReach,说明我们到了第一跳最远的边界,我们需要下一跳,step+1,更新当前的边界为下一跳最远的覆盖,curReach==4,刚好数组的边界就是4,说明我们下一条就可以跳到了,不用再继续了,break。● i=0的时候,是一个前置,下一步可以到的最远是nextReach=0+nums[0]=2,i=curReach,选择跳1次,更新curReach为下一步可以到的最远。● i=2的时候,说明我们选择了跳两步到位置2,位置2起跳的下一次最大覆盖是2+nums[2]=2+1=3<4。
2024-03-27 13:46:49
356
原创 代码随想录算法训练营DAY27|回溯part03
● [2,3,5]中取数,取了2之后,继续在[2,3,5]中取数,和之前不一样的是不需要从下一个数字取了。● 虽然没有限制组合的个数,但是由于对targetSum有要求,也是一种限制。● 难点:怎么识别同一层上的元素已经取过了?○ 将数组排序,如果是相同的元素一定相邻。● 对candidates数组进行排序。● 同一树枝上的相同元素可以重复取。● 同一层上的相同元素不可以重复取。
2024-03-19 10:26:35
270
原创 代码随想录刷题训练营DAY25|回溯part2
○ 当i=2,path加入2,变为[1, 2],sum=3。○ 当i=3,path加入3,变为[1, 3],此时sum满足条件=4,将[1, 3]添加到result中,然后移除3,sum-3再次回到1,path回到[1]。○ 当i=4,path加入4,变为[1, 4],sum=5不满足和为4的条件,然后移除4,path回到[1],sum-4=1。● 第一层递归:初始startIndex=1,选取1,path加入1,变为[1],sum为1.K相当于树的深度,9相当于树的宽度,和为4。○ for循环遍历字母。
2024-03-18 11:42:22
441
原创 代码随想录刷题训练营DAY24|回溯part1
○ 当i=2,path加入2,变为[1, 2],满足条件(path.size() == k),将[1, 2]添加到result中,然后移除2,path回到[1]。○ 当i=3,path加入3,变为[1, 3],同样满足条件,将[1, 3]添加到result中,然后移除3,path回到[1]。○ 当i=4,path加入4,变为[1, 4],同样满足条件,将[1, 4]添加到result中,然后移除4,path回到[1]。● 回到第一层递归:完成所有i=1时的递归,移除1,path变回[]。
2024-03-15 23:22:47
703
1
原创 53.最大子数组和
正常情况下,如果数组里全是正数,按着顺序一直累加,那肯定是越来越大的。但是数组里出现了负数,这个时候就要考虑一下,加上这个负数,和是更大了还是更小了?如果更小了干嘛还要加它!所以每次累加的时候和当前数本身对比,哪个更大前缀和就记录哪个。
2024-03-15 21:35:37
128
1
原创 代码随想录刷题训练营DAY22|二叉树part9
这个节点及其子节点都是原树中值在[low, high]范围内的节点,这部分树将被“接上”到更高层的适当位置。在这个特定的场景中,由于原节点的值小于low,newnode实际上是原节点右子树上第一个满足值在[low, high]范围内的节点的根节点。这个递归调用返回的TreeNode newnode代表裁剪后的右子树的根节点。思路:找到中间点,把数组一分为二,分别遍历。,并且作为新的树(或子树)根节点的节点。如果区间是[1,3]的话。2.以中间位置构造结点。
2024-03-14 16:54:42
274
1
原创 代码随想录刷题训练营DAY21|二叉树part8
假设p和q出现在左右子树,那么root一定是p和q的最近公共祖先。利用二叉搜索树的有序性。考虑单层的递归逻辑。
2024-03-13 13:53:37
386
原创 代码随想录刷题训练营DAY21|二叉树part7
思路:如果不考虑额外的空间开销就蛮简单的,用一个map在遍历的时候去记录每个数字出现的个数,取出最多的个数,然后放进结果数组里。中序遍历就是这条蓝线第二次经过结点的时候,很明显结点1在结点4前面,所以结点1就是结点4的pre。递归:选择中序遍历(左中右)。需要用一个pre节点记录一下cur节点的前一个节点。思路:二叉搜索树,二叉搜索树可是有序的。
2024-03-12 16:02:02
296
1
原创 代码随想录刷题训练营DAY20|二叉树part6
输出:[6,3,5,null,2,0,null,null,1]输入:nums = [3,2,1,6,0,5]
2024-03-11 20:43:50
555
1
原创 代码随想录算法训练营DAY18|二叉树part5
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。示例: 给定如下二叉树,以及目标和 sum = 22,说明: 叶子节点是指没有子节点的节点。
2024-03-11 11:18:53
324
1
原创 代码随想录算法训练营DAY17|二叉树part4
平衡二叉树概念:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。,这样才方便让父节点指向孩子节点,找到对应的路径。这道题目要求从根节点到叶子的路径,所以需要。
2024-03-10 21:24:07
329
1
原创 代码随想录刷题训练营DAY15|二叉树part3
二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。:从 根节点 到 最近叶子节点的 最短路径上的 结点数量。只不过,左右结点变成child结点list。同样的n叉树,也是一样的思路。递归法:计算左右结点的个数。
2024-03-07 13:20:52
406
1
原创 代码随想录刷题训练营DAY14|层序遍历|226.翻转二叉树|101.对称二叉树
根节点a开始访问,a先入队,此时队列非空,取出队头元素a,由于b,c与a邻接且未被访问过,于是依次访问b,c将b,c入队。所以在BFS的基础上,还需要加一层while,把当前队列里的元素一起输出。思路:比较根节点的左右子树–>比较左右子树的里侧,外侧是否相同。这里用图的广度优先搜索举例子。
2024-03-06 11:18:49
366
1
原创 代码随想录算法训练营DAY11|20.有效的括号|1047.删除字符串中所有相邻元素|150.逆波兰表达式
思路:遇到数字入栈,遇到符号,弹出两个数字,“/”和“-”的时候用第二个数字放前面处理。此时数组元素a与栈顶元素a一致,弹出栈里的a。最后把栈元素倒出来,反转一下。
2024-03-02 13:41:49
492
原创 代码随想录算法训练营DAY10|232.用栈实现队列|225. 用队列实现栈
在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。
2024-03-01 10:24:22
179
原创 码随想录算法训练营Day7|15.三数之和|454.四数相加II |383.赎金信|18.四数之和
把nums[left]和nums[right]的和看作一个整体b,当前的元素看作a。a+b>0,红色指针往左移动,让b减小。如果a+b
2024-02-27 21:47:50
538
原创 代码随想录算法训练营|DAY6|242.有效字母移位|349.两个数组的交集|202.快乐数|1.两数之和
我们只需要判断字母是不是一样,比如"rat"和“car”,我们可以把字母按照字符串排列,rat就变成"atr",car就变成"acr"。这道题的重点是判断有没有两个数组中有没有一样的数字,且输出是唯一的。因为set在添加元素的时候自动会帮我们做个去重,相同元素就不再重复添加了。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。如果这个过程 结果为 1,那么这个数就是快乐数。编写一个算法来判断一个数 n 是不是快乐数。
2024-02-26 11:32:54
473
1
原创 代码随想录算法训练营|DAY4|24.两两交换链表|19.删除倒数第n个结点|相交链表|环形链表
在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e7ef04a07e054ff090adff773144bd83.png像上图,节点1和节点3的next域里面存储的地址相等,假设是100,也就是说它们会一同指向这个空间里地址为100的节点,也就是2(假设它的地址值是100)。(因为假如他们相交了,那相交之后的长度是一样的,也就是说A和B不相交的部分,A比B长2,A走完这两步,就可以和B同一起点开始走向他们相交的点)等到他们相遇的时候,就是环的入口。
2024-02-24 15:51:19
811
原创 代码随想录算法训练营|DAY3|203.移除链表元素 | 707.设计链表 | 206.反转链
头结点可能被移除,所以要加入虚拟头结点。需要考虑比较多的边界条件和非法传参。这道题必须闭着眼睛都会写啦!这道题遇到的问题比较多。
2024-02-24 15:30:46
227
原创 代码随想录算法训练营第一天|977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。用一个sum记录和。绿色的箭头是i,起始位置,蓝色的箭头表示j,指向窗口左边。解释:平方后,数组变为 [16,1,0,9,100]|-4|
2024-02-22 13:17:04
556
1
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
考虑边界情况,区间的开闭。对于极端情况可以在最前面判断。自己在写的时候犯了一个错误mid=right-left/2,导致提交的时候显示超出时间限制。非常理所应当觉得一般就是右边-左边/2,这样相当于只是距离的一半。mid指针要在数组的中间,还需要在加上前面left的偏移量。比如right=5,left=1,right-left=4/2=2,但实际上mid应该指向的位置是下标为3的位置,所以还需要加上left的偏移量。
2024-02-21 13:51:07
827
1
原创 建立Logistic回归模型预测吸毒人员的复吸概率,导出模型到Java中调用
通过sklearn建立Logistic回归模型,并绘制混淆矩阵和ROC曲线#删选data=data[['年龄','文化','婚姻','居住','吸毒年限','社交行为得分',"社会支持度得分","是否第一次进入戒毒所","是否复吸"]]# 查看数据集的基本信息print(data.info())print(data.describe())# 分割数据集,X=data[['年龄','文化','婚姻','居住','吸毒年限','社交行为得分',"社会支持度得分"]] #特征X=X.fill.
2022-04-29 20:44:09
505
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人