
LeetCode
文章平均质量分 53
学习
whtli
这个作者很懒,什么都没留下…
展开
-
全排列问题(非递归实现和递归实现)
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。原创 2023-07-26 23:44:55 · 473 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-062.不同路径
一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?原创 2022-10-14 09:20:10 · 399 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-011.盛水最多的容器
给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。原创 2022-10-03 11:28:06 · 274 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-054.螺旋矩阵
给定一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。原创 2022-07-13 13:45:40 · 211 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-059.螺旋矩阵II
给定一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。原创 2022-07-13 10:14:03 · 167 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-015.三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请找出所有和为 0 且不重复的三元组。原创 2022-06-16 16:34:53 · 182 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-061.旋转链表
给定一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。原创 2022-06-05 21:42:31 · 205 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-016.最接近的三数之和
给定一个长度为 n 的整数数组nums和 一个目标值target。请从 nums 中选出三个整数,使它们的和与target最接近。返回这三个数的和。假定每组输入只存在恰好一个解。原创 2022-06-04 21:30:02 · 147 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-015.三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请找出所有和为 0 且不重复的三元组。原创 2022-06-04 10:35:07 · 245 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-008.字符串转换整数 (atoi)
实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。原创 2022-05-29 17:31:46 · 140 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-007.整数反转
目录题目描述解题思路思路1 字符串思路2 让步比大小代码(Java)题目描述给定一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^(31 − 1)] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。exampleinput : x = -123output : -321input : x = 120output : 21input : x = -2147483648o原创 2022-05-28 16:02:18 · 233 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-002.两数相加
目录题目描述解题思路思路1 模拟思路2 递归思路3 BigInteger代码(Java)题目描述给定两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请将两个数相加,并以相同形式返回一个表示和的链表。可以假设除了数字 0 之外,这两个数都不会以 0 开头。exampleinput : l1 = [2,4,3], l2 = [5,6,4]output : [7,0,8]note : 342 + 465 = 807.原创 2022-05-21 20:31:08 · 362 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-070.爬楼梯
目录题目描述解题思路思路1 动态规划思路2 递归(会超出时间限制)思路3 数学通项公式代码(Java)题目描述exampleinput : n = 2output : 2note : 有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶input : n = 3output : 3note : 有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶原创 2022-05-20 17:19:09 · 305 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-155.最小栈
目录题目描述解题思路思路1 维护最小值栈思路2 以数组为元素代码(Java)题目描述设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。实现 MinStack 类:MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int getMin() 获取堆栈中的最小元素。exampleinput : ["MinStack","p原创 2022-05-16 14:37:48 · 274 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-121.买卖股票的最佳时机
目录题目描述解题思路思路1 动态规划思路2 暴力法(会超出时间限制)代码(Java)题目描述给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算所能获取的最大利润。返回可以从这笔交易中获取的最大利润。如果不能获取任何利润,返回 0 。exampleinput : prices = [7,1,5,3,6,4]output : 5note原创 2022-05-15 21:07:35 · 288 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-169.多数元素
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。可以假设数组是非空的,并且给定的数组总是存在多数元素。原创 2022-05-14 21:00:00 · 255 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-557.反转字符串中的单词III
目录题目描述解题思路代码(Java)题目描述给定一个字符串 s ,需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。exampleinput : s = "Let's take LeetCode contest"output : "s'teL ekat edoCteeL tsetnoc"解题思路把原字符串按空格分割为多个字符串借助StringBuilder的reverse()方法实现所有子字符串的反转然后把每个反转后的字符串拼接到一起,拼接时需注意添加空格返原创 2022-05-13 21:00:00 · 226 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-206.反转链表
目录题目描述解题思路代码(Java)题目描述给定单链表的头节点 head ,请反转链表,并返回反转后的链表。exampleinput : head = [1,2,3,4,5]output : [5,4,3,2,1]input : head = []output : []解题思路思路1 迭代双指针,头插法,迭代遍历链表,使用头插法将链表反转即可时间复杂度O(n)空间复杂度O(1)思路2 头插法头插法,遍历时不断创建新节点初始创建空节点 rev = null遍原创 2022-05-12 08:00:00 · 226 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-217.存在重复元素
给定一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。原创 2022-05-11 08:00:00 · 142 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-160.相交链表
目录题目描述解题思路代码(Java)题目描述给定两个单链表的头节点 headA 和 headB ,找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。exampleinput : intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3output : Intersected at '8'input : intersectVal = 2, listA原创 2022-05-10 08:15:00 · 129 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-141.环形链表
给定一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。...原创 2022-05-08 20:31:22 · 150 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-136.只出现一次的数字
目录题目描述解题思路代码(Java)题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:算法应该具有线性时间复杂度。 可以不使用额外空间来实现吗?exampleinput : nums = {2,1,2}output : 1input : nums = {4,3,2,3,2}output : 4解题思路思路1 借助排序先排序遍历排序后的数组,遍历步长设为2若当前位置元素 nums[i] 和其后相邻元素n原创 2022-05-08 20:30:05 · 456 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-88.合并两个有序数组
目录题目描述解题思路代码(Java)题目描述给定两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。原创 2022-05-04 20:41:29 · 278 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-26.删除有序数组中的重复项
目录题目描述解题思路代码(Java)题目描述给定一个 升序排列 的数组 nums,原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k 个位置后返回 k 。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额原创 2022-05-04 14:25:04 · 1114 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-21.合并两个有序链表
题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。exampleinput : l1 = [1,2,4], l2 = [1,3,4]output : [1,1,2,3,4,4]input : l1 = [], l2 = []output : []input : l1 = [], l2 = [0]output : [0]原创 2022-05-03 14:17:19 · 1166 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-20.有效的括号
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。exampleinput : s = "()[]{}"output : trueinput : s = "([)]"output : falseinput : s = "{[]}"output : true原创 2022-05-02 16:40:32 · 575 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-14.最长公共前缀
LeetCode腾讯精选练习50题-14.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成原创 2022-04-30 20:11:09 · 172 阅读 · 0 评论 -
LeetCode其他-1629.按键持续时间最长的键
目录题目描述解题思路代码(Java)题目描述LeetCode 设计了一款新式键盘,正在测试其可用性。测试人员将会点击一系列键(总计 n 个),每次一个。给你一个长度为 n 的字符串 keysPressed ,其中 keysPressed[i] 表示测试序列中第 i 个被按下的键。releaseTimes 是一个升序排列的列表,其中 releaseTimes[i] 表示松开第 i 个键的时间。字符串和数组的 下标都从 0 开始 。第 0 个键在时间为 0 时被按下,接下来每个键都 恰好 在前一个原创 2022-04-26 23:12:33 · 98 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-104.二叉树的最大深度
LeetCode腾讯精选练习50题-104.二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。原创 2022-04-20 14:05:36 · 499 阅读 · 1 评论 -
LeetCode腾讯精选练习50题-237.删除链表中的节点
LeetCode腾讯精选练习50题-237.删除链表中的节点请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点原创 2022-04-19 21:11:47 · 372 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-344.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。原创 2022-04-13 21:42:51 · 452 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-231.2的幂
题目描述给定一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂次方。原创 2022-04-10 20:14:54 · 1582 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-235.二叉搜索树的最近公共祖先
题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。exampleinput : root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8output : 6note : 节点 2 和节点 8 的最近公共祖先是节点 6。input : root =原创 2022-04-09 17:08:33 · 254 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-292.Nim游戏
题目描述两个人一起玩 Nim 游戏:桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手。每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false。exampleinput : n = 4output : falsenote : 1. 你移除1颗石头;你的朋友移走了3块石头,包括最后一块。你的朋友赢了。原创 2022-04-08 10:55:54 · 2672 阅读 · 0 评论 -
LeetCode腾讯精选练习50题-009.回文数
题目描述给定一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。进阶:不将整数转为字符串来解决这个问题exampleinput : 121output : trueinput : -121output : false解题思路先把一些很明确的情况排除掉负数直接返回false即可,肯定不是回文数[1, 10]内的数和10的倍数都肯定不是回文数思路1 借助字符串转成字符串后原创 2022-04-06 20:49:12 · 603 阅读 · 0 评论 -
LeetCode精选TOP面试题050.Pow(x, n)
题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn )。exampleinput : x = 2.00000, n = 10output : 1024.00000input : x = 2.10000, n = 3output : 9.26100input : x = 2.00000, n = -2output : 0.25000note : 2^-2 = 1/2^2 = 1/4 = 0.25解题思路公式:思路1 递归参数:初始值 x原创 2022-03-17 13:59:22 · 326 阅读 · 0 评论 -
LeetCode精选TOP面试题138. 复制带随机指针的链表
题目描述给定一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。原创 2022-03-03 20:52:21 · 176 阅读 · 0 评论 -
LeetCode精选TOP面试题341.扁平化嵌套列表迭代器
题目描述给定一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。原创 2022-03-01 23:22:45 · 281 阅读 · 0 评论 -
LeetCode精选TOP面试题236.二叉树的最近公共祖先
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。exampleinput : root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1output : 3input : root = [3,5,1,6,2,0,8,null,null,7,4], p = 5原创 2022-02-23 21:00:15 · 179 阅读 · 0 评论 -
LeetCode精选TOP面试题103.二叉树的锯齿形层序遍历
题目描述给定二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行。exampleinput : root = [3,9,20,null,null,15,7]output : [[3],[20,9],[15,7]]note : 3 / \ 9 20 / \ 15 7input : root = [原创 2022-02-19 14:58:03 · 207 阅读 · 0 评论