Top100
文章平均质量分 94
乐超kawhi
星鹏此去路迢迢,为负劳心此一遭。愿得知识堪堪了,也堪将去夸尔曹。超福人生,醉美生活。他冀与她,看遍风雨,慢慢变老。
展开
-
TOP100 二分法
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(log n)的算法。示例 1:2示例 2:1示例 3:4nums为无重复元素的升序排列数组。原创 2024-04-16 21:29:04 · 989 阅读 · 0 评论 -
TOP100-回溯(二)
本题没有数量要求,可以无限重复,但是有总和的限制,所以间接的也是有个数的限制。因为本题没有组合数量要求,仅仅是总和的限制,所以递归没有层数的限制,只要选取的元素总和超过target,就返回!单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。关键点在于:当访问到的位置不是下一个预期值时,直接跳出,然后回溯,不继续下去。递归深度其实就是row控制棋盘的行,每一层里for循环的col控制棋盘的列,一行一列决定了皇后的位置。7 也是一个候选, 7 = 7。原创 2024-03-28 21:28:17 · 968 阅读 · 0 评论 -
TOP100 回溯
摘在前面(作者:liweiwei1419):回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:1.找到一个可能存在的正确的答案;2.在尝试了所有可能的分步方法后宣告该问题没有答案。原创 2024-02-27 16:52:04 · 827 阅读 · 0 评论 -
TOP100 图论
学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。1.首先构建一个邻接表,并开始遍历prerequisites数组,记录每一个顶点(一门课)的入度。=(m,n)表示学习m前必须学习n,则m的入度+1,邻接表key=m对应value数组添加n。学习课程 1 之前,你需要完成课程 0。2.再次遍历,每次选择入度为0的顶点,入队,并将判断将相关顶点入度-1。3.最后判断所有入度是否为0,是则可以修完,否则不可以。在选修某些课程之前需要一些先修课程。原创 2024-02-18 15:58:02 · 941 阅读 · 0 评论 -
TOP100 二叉树(三)
因此顺序肯定是,先根据前序序列确定根节点,然后按照根节点对中序序列做划分,序列以左为左孩子,序列以右是右孩子。递推参数: 根节点在前序遍历的索引 root 、子树在中序遍历的左边界 left 、子树在中序遍历的右边界 right。不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。最开始,想着深度优先搜索,然后给每一个叶节点对应一个列表,然后对列表里的元素,求前缀和。考虑新的右子树的根节点,一直重复上边的过程,直到新的右子树为 null。给定一个二叉树的根节点。原创 2024-02-08 22:38:37 · 866 阅读 · 0 评论 -
TOP100 二叉树(二)
刚开始还想着中序遍历输出元素至列表,然后对列表进行判断,如果其不是升序,则返回false。因为是按照升序递增,最好的方法就是按照二分的方式,以中间元素为跟节点,依次进行建树。保存一个全局变量,用于保存上一个访问到的节点。二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。根节点的值是 5 ,但是右子节点的值是 4。给你一个二叉树的根节点。原创 2024-02-07 19:57:49 · 802 阅读 · 0 评论 -
TOP100-链表(二)
如果存在,则在找到汇点以后,另开一个指向头的指针,同时遍历,下一次两指针会面之时,就是汇点的位置。指针再次到达,则链表中存在环。指针再次到达,则链表中存在环。新链表是通过拼接给定的两个链表的所有节点组成的。来表示链表尾连接到链表中的位置(索引从 0 开始)。双指针,互相比较,较大者先入,然后往后移指针。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。原创 2024-02-02 18:21:06 · 801 阅读 · 0 评论 -
TOP100 链表(一)
的输入如下(你设计的程序。原创 2024-02-01 17:51:49 · 940 阅读 · 0 评论 -
TOP100 矩阵
2)关键思想: 用matrix第一行和第一列记录该行该列是否有0,作为标志位。但是对于第一行,和第一列要设置一个标志位,为了防止自己这一行(一列)也有0的情况.注释写在代码里,直接看代码很好理解!1)先遍历以便用集合来存0元素的行号与列号,再遍历对出现其中的元素进行清零。旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。主要就是模拟,关键在于设定上下左右边界。,则将其所在行和列的所有元素都设为。的矩阵,如果一个元素为。,返回矩阵中的所有元素。使用另一个矩阵来旋转图像。原创 2024-01-30 17:41:56 · 1054 阅读 · 0 评论 -
Top100 数组
先扫描intervals数组,每个子列表从starti到endi依次进行判断标记,未出现过则置1,期间要记录一下最大endi(这是下一步扫描的结束点);执行结束后扫描哈希表,并设置一flag,创建空的工作列表:当flag为flase且出现1时,将位置序i加入新列表中。如果我们按照区间的左端点排序,那么在排完序的列表中,可以合并的区间一定是连续的。1)按照前缀和,进行遍历,代码如下,超时,不可以了,而且时间复杂度有点高,需要优化!连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。原创 2024-01-28 15:35:43 · 908 阅读 · 0 评论