- 博客(20)
- 收藏
- 关注
原创 执行任务赚积分(贪心+邻接表实现)
当任务次数达到上限就退出循环,或者遍历了所有任务的开始时间都没有对应的积分列表,就退出。当任务次数达到上限就退出循环,或者遍历了所有任务的开始时间都没有对应的积分列表,就退出。从小到大遍历每一个开始时间,对每一个开始时间下的任务积分倒序排序,取出最大的积分累加。从小到大遍历每一个开始时间,对每一个开始时间下的任务积分倒序排序,取出最大的积分累加。用邻接表存放同一个开始时间下的所有任务的积分。用邻接表存放同一个开始时间下的所有任务的积分。
2024-04-09 12:18:02
343
原创 小华最多能获得多少黄金(dfs)
因为是从起点出发遍历所有可能的路径,所有没有明确的返回值,同时不需要回溯,如果把计数器放在dfs参数里,由于回溯计数器最终为0.所有统计步数应该放在dfs外。写法1:直接用方向数组确定下一个坐标,并在越界和访问过以及数位和都不满足的情况下continue,然后进入下一轮dfs。注意:至于标记走过,统计结果,既可以放在本轮dfs处理,也可以放在选好坐标后的下一轮处理。把越界和访问过以及数位和都不满足的情况下作为返回条件return,用dfs遍历所有可能的路径,然后在每一轮统计一次步数即可。
2024-04-07 11:35:03
797
原创 最小矩阵宽度(变长滑动窗口)
滑动窗口实现:双层for循环,外层for循环代表窗口后沿,内层for循环代表窗口前沿,窗口前沿每向右移动一个位置,将当前位置的元素加入滑动窗口中(用hashmap统计),并做判断,当前窗口内元素是否覆盖了数组中的元素,若是则更新最小长度,退出内层for循环,重新初始化窗口,窗口后沿右移。用Hashmap保存滑动窗口内的元素和频次。然后检查滑动窗口内的元素是否覆盖了带匹配数组的元素。是则返回当前的窗口长度。
2024-04-04 21:49:15
406
原创 【去重全排列】字符串拼接
HashSet完成全排列,保存结果时要注意的是将一个链表去加入到另一个链表要用new LinkedList(链表),不能直接用链表本身,否则加入得到的内容是空。HashSet完成去重。
2024-04-04 11:03:08
154
原创 字符串序列判断
使用指针标记待匹配的字符串当前字符的位置,当指针指向字符串最后一个字符时,表明匹配成功,输出当前最后一个匹配到的字符在字符串中的位置。for循环遍历字符串元素,当匹配到待匹配字符串中的元素,指针就+1,当指针指向最后一个字符时,匹配成功,输出位置,否则输出-1。
2024-04-03 10:49:19
184
原创 转盘寿司(单调栈解决)
当遇到比栈顶元素小的元素的时候,就将元素的下标出栈,保存进入结果数组的下标中,结果数组的元素值是比当前栈顶元素小的元素的下标。与找朋友一致,单调栈解决,注意单调栈中存放的是数组元素的下标。
2024-04-02 18:36:01
235
原创 找朋友(单调栈解决)
否则,当while栈不为空且当前元素栈顶指的下标对应的元素小于当前数组元素,就弹出栈顶元素,然后将栈顶元素作为结果数组下标,比栈顶元素指的元素大的元素的下标作为结果数组的值。然后将当前元素的下标加入栈内。单调栈,唯一注意的就是栈内存放的是元素的下标,不是元素值,容易混。遍历数组元素,当栈为空,就存放当前数组元素的下标。
2024-04-02 18:07:03
138
原创 查询交换功率最优时间段(双指针)
右指针每右移动一个位置,统计一次当前的平均值,如果满足条件,则进一步判断是否是最大长度,是,则更新最大长度,清空之前保存在内链表中的内容,然后将结果加入链表二元组的内链表(Linedlist)此时内链表保存的即为最大平均长度的起点和终点。右指针每右移动一个位置,统计一次当前的平均值,如果满足条件,则进一步判断是否是最大长度,是,则更新最大长度,清空之前保存在内链表中的内容,然后将结果加入链表二元组的内链表(Linedlist)此时内链表保存的即为最大平均长度的起点和终点。
2024-04-02 11:32:58
240
原创 从后序遍历和中序遍历中还原二叉树(搭配前中后层序遍历输出还原的二叉树)
从后序遍历和中序遍历中还原二叉树:*与从前序和中序遍历中还原二叉树一致,因为后序遍历区间的末尾元素就是中序遍历的根节点,因此,用后序遍历区间末尾元素初始化根节点,用中序遍历根节点左区间和后序遍历左子树区间构造二叉树的左子树,用中序遍历根节点右区间和后序遍历右子树区间构造二叉树的右子树,最后返回根节点。用后序遍历区间末尾元素初始化根节点,用中序遍历根节点左区间和后序遍历左子树区间构造二叉树的左子树,用中序遍历根节点右区间和后序遍历右子树区间构造二叉树的右子树,最后返回根节点。
2024-03-30 22:19:41
879
原创 亲子游戏(bfs)
遍历下一个位置起点,越界和遇到障碍则重新选起点,否则将新的起点加入队列,并标记为访问过。开辟一个额外的二维数组去保存到达目标位置可以获得的最多糖果数量。while循环内,将初始化好的队列元素取出起点给当前坐标x,y。只需要初始化好队列要存放的起点,然后调用bfs即可。求最短路径就用bfs,遍历所有可能路径就用dfs。一个while循环,条件是当队列不为空。当到达目标位置坐标时,返回统计结果。最短时间可以等价理解为最短距离。一个队列queue:存放起点。然后统计走完新起点处的结果。
2024-03-29 17:30:20
163
原创 跳格子得到的最大分数
状态转移方程:第i个位置的最大分数为当前位置的最大分数与(i-j位置的最大分数与i-j位置向后走j位置后到达i位置的分数的和)的最大值。位置i的最大分数,是由(i-j位置的最大分数和i-j位置向后走j步到达i位置分数的和)与位置i的最大分数比较得到的最大值。for循环:从位置1开始循环,确保状态转移方程从dp起点开始执行。dp起点:位置0处的最大分数是socre【0】
2024-03-27 10:47:55
181
原创 伐木工(动态规划)
为了确保拆分后的木材数量最少,可以在得到最优结果dp【i】后,倒序拆分dp【i】判断各个情况下的最少拆分数量,然后存入结果res链表中。
2024-03-26 22:43:49
381
原创 二分答案总结
一个check函数:*用于判断当前二分的mid是否满足题目要求。如求最短距离的最大值,那么mid就是最短距离,check是检查mid是否是最短距离,而mid的最大值用二分法去找。如果找最大的mid,则向右靠区间,l=mid。如果找最小的mid,则向左靠区间,r=mid。区间是答案而不是二分查找的下标。主函数里:先从小到大排序。最后输出r或者l都可以!
2024-03-25 17:24:09
115
原创 TCP/IP协议理解
TCP/IP在家庭个/人电子设备广泛普及的时代,各个电子设备之间信息传输的主要通过互联网来实现,互联网世界也如同我们现实社会一样需要规范的法规条例来让世界有条不紊的运转,所以相应地网络协议便诞了,当今Internet的主流协议族便是TCP/IP协议族,一个分层,多协议的通信体系。TCP/IP协议族主要分为了四个层面,包括:(1)应用层:应用层是直接和用户和其他网络协议层互动的,它将数据直接...
2019-12-04 01:08:15
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人