leetcode
文章平均质量分 57
taotaoxianzi
这个作者很懒,什么都没留下…
展开
-
Day15:剑指 Offer 34. 二叉树中和为某一值的路径(中等)
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22。路径记录:判断当前节点的值与之前路径之和是否等于targetSum且当前节点为叶子结点。输入:root = [1,2,3], targetSum = 5。输出:[[5,4,11,2],[5,8,4,5]]叶子节点 是指没有子节点的节点。原创 2023-03-15 14:58:24 · 42 阅读 · 0 评论 -
Day15:剑指 Offer 54. 二叉搜索树的第k大节点(简单)
让我们看一下中序遍历的过程:左子树,根节点,右子树。这样得到的是升序排列。那么我们反过来,先右子树,根节点,再左子树。这样第k个访问到的是不是就是题目要求的?可以看到方法一的空间复杂度为O(N),有没有一种方法能够在不借助辅助空间的前提下,找到第k大的元素值呢?给定一棵二叉搜索树,请找出其中第 k 大的节点的值。题目给到的是二叉搜索树。1 ≤ k ≤ 二叉搜索树元素个数。左子树原创 2023-03-15 14:36:19 · 35 阅读 · 0 评论 -
Day15:剑指 Offer 36. 二叉搜索树与双向链表(中等)
1.循环链表的构建:调用完dfs后,已经得到了一个有序的双向链表。此时的pre指向的是链表的最尾部。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。在链表的连接中,要考虑node->left=pre和pre->right=node。当pre不为空时,修改双向节点引用:cur->left=pre,pre->right=cur。原创 2023-03-15 14:15:35 · 116 阅读 · 0 评论 -
每日一题:1615. 最大网络秩(中等)
根据题意,两个城市之间的网络秩为各城市相连道路之和,如果两城市相邻,相邻道路只能计算一次。我们可以将城市i相连的道路记为度数 degree(i)。n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络。两座不同城市构成的 城市对 的 网络秩 定义为:与这两座城市 直接 相连的道路总数。两城市有公共道路 rank(i,j)=degree(i)+degree(j)-1。整个基础设施网络的 最大网络秩 是所有不同城市对中的 最大网络秩。枚举两两城市之间的网络秩并找到最大网络秩即可。原创 2023-03-15 13:32:11 · 53 阅读 · 0 评论 -
刷题笔记 leetcode 69.x的平方根(简单)
m>x 我们就将m减一;m * m原创 2023-03-14 15:45:39 · 30 阅读 · 0 评论 -
刷题笔记 leetcode 34.在排序数组中查找元素的第一个和最后一个位置(中等)
和普通的二分查找相比,本题要求我们找到相同元素出现的第一个和最后一个位置,也就是说数组中有重复元素,因此不能用普通的二分查找来解决。请你找出给定目标值在数组中的开始位置和结束位置。target出现在数组之间,但数组中并不存在target。如[1,3,5]查找2,这时也应该返回[-1,-1]target出现在数组之间,且数组中存在target。如[1,3,5]查找3,这时返回[1,1]。如[1,3,5]查找6,这时应该返回[-1,-1]。如果数组中不存在目标值 target,返回 [-1, -1]。原创 2023-03-14 15:38:44 · 32 阅读 · 0 评论 -
刷题笔记 leetcode 35.搜索插入位置(简单)
本题相比于704.二分查找 只多了一个要求:如果搜索目标不在数组中,则需要返回应该插入的位置,如示例三所示。给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。请必须使用时间复杂度为 O(log n) 的算法。nums 为 无重复元素 的 升序 排列数组。来源:力扣(LeetCode)时间复杂度:O(logn),最后返回left即可。空间复杂度: O(1)原创 2023-03-14 15:35:49 · 30 阅读 · 0 评论 -
刷题笔记 leetcode 704.二分查找(简单)
if(nums[mid]>target) right取值为mid 因为当前nums[mid]>target 去左侧区间继续循环,而左侧区间为左闭右开区间,所以right更新为mid 即下一个查询区间不会查询nums[mid]。,因为此时右区间是闭合的,所以target必不可能等于nums[right],下一个要考虑到右边界值为mid-1。实际上,根据大部分人的代码习惯,左闭右闭的查找方法是最多的,也是最贴合下标的。right)要使用原创 2023-03-14 15:31:07 · 27 阅读 · 0 评论 -
刷题笔记 leetcode 189.轮转数组(中等)
数组长度为1~10^5^ ,需要轮转的位数k也为1~10^5^。首先我们能够想到最简单解题方法就是另外开辟出等长的数组,将旧数组后k位放至新数组的前k位,再将旧数组的前n-k位放至新数组的后n-k位,最后将新数组复制给旧数组即可实现题目要求。先看提示,这是做题的好习惯。如上图 我们要对[1,2,3,4,5,6]的数组向右乱转k=3位。将整个数组[0,n-1]整体反转为[6,5,4,3,2,1]将[0,k-1]部分翻转 为[4,5,6,3,2,1]将[k,n-1]部分反转为[4,5,6,1,2,3]原创 2023-03-14 15:23:29 · 115 阅读 · 0 评论 -
刷题笔记 leetcode 724.寻找中心坐标(简单)
需要考虑一种特别情况,也就是题目中说到的中心坐标在0号位置,这时num=0(因为左侧没有元素) 也就是numi=total。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。,当前元素值为numi,假设该位置为中心坐标元素,则右侧元素之和也为num,有等式:左+当前+右=total。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。求出来,当我们遍历到数组的某个位置i时,其左边的元素和为。时间复杂度:一次遍历即可找到中心坐标,O(N)原创 2023-03-14 15:14:42 · 85 阅读 · 0 评论 -
刷题笔记 leetcode 66.加一(简单)
看完题目的瞬间便想到,能不能将数组转为string型,再将其转为int类型 加一之后再转回数组。但是实践之后发现数组有可能10000位 这样的话无论是int还是double或者是long long都无法装下这么大的数字,因此还是回到数组的角度来解决这个问题。全为9 如9999,此时需要开辟一个新的,长度比当前数组大一的数组 再将首位置1,其余位置0。给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。著作权归领扣网络所有。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。原创 2023-03-14 15:08:12 · 30 阅读 · 0 评论 -
Day4:剑指 Offer 03. 数组中重复的数字(简单)
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。要想在不开辟额外的内存空间情况下,实现题目要求,我们可以先对数组进行一个排序(题目没说不能改变原数组),之后遍历排序数组,遇到重复元素则返回即可。此时,数组下标为0的元素为1,而数组下标为1的元素为3。由于题目说,存在多个重复元素,只需找到任意一个,我们的这种方法找到的是。数组下标为0的元素为2 而数组下标为2的元素为1。原创 2023-03-14 15:00:31 · 45 阅读 · 0 评论 -
Day14:面试题13. 机器人的运动范围(中等)
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1]。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。通过递归,先朝一个方向搜到底,再回溯至上一个节点,沿另一个方向搜索,以此类推。递归参数:当前元素在矩阵中的行列索引 i, j,行列数 m,n 访问数组visited。时间复杂度:O(MN)原创 2023-03-14 11:17:35 · 34 阅读 · 0 评论 -
Day14:剑指 Offer 12. 矩阵中的路径(中等)
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。因此在搜索过程中,遇到这条路已经不可能与字符串匹配成功的情况时,应该立即返回,也叫。时间复杂度:最差情况下,需要递归遍历所有矩阵元素所有方向的方案,所有元素O(MN);例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。通过递归,先朝一个方向搜到底,再回溯至上一个节点,沿另一个方向搜索,以此类推。),为什么是3,四个方向,不用遍历来时的方向。(当前矩阵元素与字符串元素不同)原创 2023-03-14 10:46:42 · 58 阅读 · 0 评论 -
Day3:剑指 Offer 58 - II. 左旋转字符串(简单)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。而字符串反转的代码大家应该都很熟悉,我就一次性贴出所有代码了。将整个s反转: s="cdefgab" 得到输出。将s进行三次反转,效果与左旋字符串一样。将0到k-1进行反转: s="bacdefg"将k到串尾反转: s="bagfedc"时间复杂度:O(2N)=O(N)空间复杂度: O(1)时间复杂度:O(N)空间复杂度:O(N)原创 2023-03-13 15:57:55 · 50 阅读 · 0 评论 -
Day3:剑指 Offer 05. 替换空格(简单)
首先容易想到的是,我们新建一个空字符串,再遍历s,遇到非空格,就将原值加到空字符串尾部;遇到空格,则将%20加到尾部。从后向前,对数组进行填充,将空格替换为%20。因为从前往后移动元素的时间复杂度为。可不可以原地对旧数组就行修改,使得达到题目要求呢,当然是可以的。请实现一个函数,把字符串 s 中的每个空格替换成"%20"。时间复杂度:一次数组遍历达到要求,O(N),s需要扩充的长度为count*2。空间复杂度:借助辅助数组 O(N)统计s中空格出现的次数count。时间复杂度:O(N)空间复杂度:O(1)原创 2023-03-13 15:43:32 · 47 阅读 · 0 评论 -
Day2:剑指Offer35:复杂链表的复制(中等)
我们只需要新建一个链表点,每个新节点的val=旧节点val,新节点->next=旧节点->next就可以了。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。比如:现在我们要对节点值为13的新节点(红色)的random后缀进行连接。节点复制:在每个节点的后面复制一个值完全一模一样的节点copyNode。这样一来,复制节点13的random就连接到了值为7的复制节点上(虚线)断链:将新节点与旧节点进行断链:这里要格外细心。原创 2023-03-13 15:26:56 · 31 阅读 · 0 评论 -
Day2:剑指 Offer 24. 反转链表(简单)
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。0原创 2023-03-13 15:09:09 · 39 阅读 · 0 评论 -
Day2:剑指 Offer 06. 从尾到头打印链表(简单)
因为单链表是单向的,所以链表的反向遍历是链表中经常遇到的问题。要想从尾到头的返回每个节点的值,我们可以借助栈的。的性质,在顺序遍历链表的同时,将链表值进行入栈操作,遍历完成后,将栈中元素进行出栈,即可实现题目要求。在不借助外部空间的情况下,我们可以将整个链表进行翻转,最后对链表进行一次遍历即可完成要求。时间复杂度:第一次遍历链表进行翻转,第二次遍历翻转后的链表,O(N)空间复杂度:没有开辟要求的数组以外的空间,O(1)时间复杂度:一次遍历链表,一次出栈操作。空间复杂度:另外开辟了一个辅助栈,O(N)原创 2023-03-13 14:50:11 · 46 阅读 · 0 评论 -
力扣leetcode 面试题01.01. 判定字符是否唯一
题目描述:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。解题思路1.暴力法 时间换空间看到题目第一想法便是使用二重循环来判断是否存在重复元素,外循环i记录当前位置,内循环j查看i右侧元素astr[j]是否存在与astr[i]相同元素。若有重复,.原创 2022-02-26 19:33:39 · 283 阅读 · 0 评论 -
力扣leetcode 面试题02.01 移除重复节点
面试题02.01 移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。解题思路:1.哈希表,空间换时间注意到题目给的是未排序的链表,因此,需要考虑的情况也就更为复杂。首先想到的是使用一个哈希表来记录已出现的val值,...原创 2022-02-26 19:13:24 · 312 阅读 · 0 评论