LeetCode
BUPT-WT
不积硅步无以至千里,不积小流无以成江海
展开
-
Leetcode 47. 全排列 II (每日一题 20211015)
给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2], [1,2,1], [2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]链接:https://leetcode-cn.com/problems/permutations-iiclass Solution: ..原创 2021-10-15 08:44:04 · 87 阅读 · 0 评论 -
Leetcode 剑指 Offer 42. 连续子数组的最大和 (每日一题 20211014)
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcofclass Solution: def maxSubArray(se...原创 2021-10-14 09:49:02 · 74 阅读 · 0 评论 -
Leetcode 349. 两个数组的交集 (每日一题 20211014)
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]链接:https://leetcode-cn.com/problems/intersection-of-two-arraysclass Solution: def intersection(self, nums1: List[..原创 2021-10-14 09:47:59 · 64 阅读 · 0 评论 -
Leetcode 153. 寻找旋转排序数组中的最小值 (每日一题 20211014)
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个元素值 互不相同 的数组.原创 2021-10-14 09:44:29 · 160 阅读 · 0 评论 -
Leetcode 739. 每日温度 (每日一题 20211014)
请根据每日 气温 列表 temperatures,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出:[1,1,1,0]示例 3:输入: temperatures = [30,60,90]输出: [1,1,0]...原创 2021-10-14 09:29:50 · 104 阅读 · 0 评论 -
Leetcode 91. 解码方法 (每日一题 20211013)
一条包含字母A-Z 的消息通过以下映射进行了 编码 :'A' -> 1'B' -> 2...'Z' -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:"AAJF" ,将消息分组为 (1 1 10 6)"KJF" ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 "06" 不能映射为 "F" ,这是由于 "6" 和 "06" 在映射中并不等价。给...原创 2021-10-13 22:31:52 · 117 阅读 · 0 评论 -
Leetcode 面试题 01.01. 判定字符是否唯一 (每日一题 20211012)
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false 示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。链接:https://leetcode-cn.com/problems/is-unique-lcciclass Solution: def isUnique(self, astr: str) -.原创 2021-10-12 08:26:57 · 146 阅读 · 0 评论 -
Leetcode 18. 四数之和 (每日一题 20211011)
给你一个由 n 个整数组成的数组nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]] :0 <= a, b, c, d< na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。示例 1:输入:nums = [1,0,-1,0,-2,2], target = ...原创 2021-10-11 09:19:09 · 294 阅读 · 0 评论 -
Leetcode 213. 打家劫舍 II (每日一题 20211009)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), ...原创 2021-10-09 07:29:26 · 110 阅读 · 0 评论 -
Leetcode 51. N 皇后 (每日一题 20211008)
n皇后问题 研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给你一个整数 n ,返回所有不同的n皇后问题 的解决方案。每一种解法包含一个不同的n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例 1:输入:n = 4输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]解释:如上图所示,4 皇后问题存在两个不同的解法。示例 2...原创 2021-10-08 09:43:34 · 89 阅读 · 0 评论 -
Leetcode 145. 二叉树的后序遍历 (每日一题 20210930)
给定一个二叉树,返回它的 后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶:递归算法很简单,你可以通过迭代算法完成吗?链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal# Definition for a binary tree node.# class TreeNode:# def __init...原创 2021-09-30 10:22:11 · 60 阅读 · 0 评论 -
Leetcode 392. 判断子序列 (每日一题 20210929)
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?致谢:特别感谢 @pbrother添加此问题并且创建所有测试用例。示例 1:输入...原创 2021-09-29 10:19:58 · 66 阅读 · 0 评论 -
Leetcode 剑指 Offer 53 - I. 在排序数组中查找数字 I (每日一题 20210928)
统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcofclass Solution: def search(self, nums: Li...原创 2021-09-28 08:22:47 · 58 阅读 · 0 评论 -
Leetcode 120. 三角形最小路径和 (每日一题 20210927)
给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。示例 1:输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]输出:11解释:如下面简图所示: 2 3 4 6 5 74 1 8 3自顶向下..原创 2021-09-27 07:12:30 · 101 阅读 · 0 评论 -
Leetcode 59. 螺旋矩阵 II (每日一题 20210926)
给你一个正整数n ,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]链接:https://leetcode-cn.com/problems/spiral-matrix-iiclass Solution: def generateMatrix(self, n: int) -&g...原创 2021-09-26 07:41:43 · 113 阅读 · 0 评论 -
Leetcode 103. 二叉树的锯齿形层序遍历 (每日一题 20210924)
给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20,9], [15,7]]链接:https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-trav..原创 2021-09-24 07:37:39 · 80 阅读 · 0 评论 -
Leetcode 155. 最小栈 (每日一题 20210923)
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop()—— 删除栈顶的元素。top()—— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,n...原创 2021-09-23 07:17:08 · 105 阅读 · 0 评论 -
Leetcode 45. 跳跃游戏 II (每日一题 20210922)
给你一个非负整数数组nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: ...原创 2021-09-22 08:33:35 · 94 阅读 · 0 评论 -
Leetcode 876. 链表的中间结点 (每日一题 20210918)
给定一个头结点为 head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.ne...原创 2021-09-18 07:59:15 · 89 阅读 · 0 评论 -
Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums =[1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcofclass Solution: def ex...原创 2021-09-17 07:23:04 · 132 阅读 · 0 评论 -
Leetcode 剑指 Offer 11. 旋转数组的最小数字 (每日一题 20210916)
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcofclass ...原创 2021-09-16 07:44:28 · 81 阅读 · 0 评论 -
Leetcode 剑指 Offer 09. 用两个栈实现队列 (每日一题 20210915)
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:["CQueue","deleteHead","appendTa...原创 2021-09-16 07:34:31 · 61 阅读 · 0 评论 -
Leetcode 203. 移除链表元素 (每日一题 20210914)
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]链接:https://leetcode-cn.com/problems/remove-li..原创 2021-09-14 08:16:36 · 96 阅读 · 0 评论 -
Leetcode 217. 存在重复元素 (每日一题 20210913)
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true链接:https://leetcode-cn.com/problems/contains-duplicateclass Solution...原创 2021-09-13 08:21:39 · 95 阅读 · 0 评论 -
Leetcode 112. 路径总和 (每日一题 20210910)
给你二叉树的根节点root 和一个表示目标和的整数targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true示例 2:输入:root = [1,2,3], targetSum = 5输出:false示例 3:输...原创 2021-09-10 09:19:03 · 160 阅读 · 0 评论 -
Leetcode 189. 旋转数组 (每日一题 20210909)
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为O(1) 的原地算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4...原创 2021-09-09 09:07:42 · 63 阅读 · 0 评论 -
Leetcode 82. 删除排序链表中的重复元素 II (每日一题 20210908)
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-iic...原创 2021-09-08 20:53:33 · 121 阅读 · 0 评论 -
Leetcode 74. 搜索二维矩阵 (每日一题 20210907)
编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3输出:true示例 2:输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13输出:false链接:h...原创 2021-09-07 09:34:21 · 155 阅读 · 0 评论 -
Leetcode 剑指 Offer 13. 机器人的运动范围 (每日一题 20210906)
地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m..原创 2021-09-06 09:22:13 · 164 阅读 · 0 评论 -
Leetcode 63. 不同路径 II (每日一题 20210903)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。示例 1:输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有..原创 2021-09-03 08:46:17 · 200 阅读 · 0 评论 -
Leetcode 142. 环形链表 II (每日一题 20210902)
给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中...原创 2021-09-02 07:29:49 · 103 阅读 · 0 评论 -
Leetcode 118. 杨辉三角 (每日一题 20210901)
给定一个非负整数numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例2:输入: numRows = 1输出: [[1]]链接:https://leetcode-cn.com/problems/pascals-triangleclass Solution: def ge...原创 2021-09-01 10:58:32 · 313 阅读 · 0 评论 -
Leetcode 31. 下一个排列 (每日一题 20210831)
实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums = [1]输出..原创 2021-08-31 09:18:31 · 59 阅读 · 0 评论 -
Leetcode 剑指 Offer 58 - II. 左旋转字符串 (每日一题 20210830)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrlose"链接:https://leetcode-cn.com/problems/zuo-xuan-zhua...原创 2021-08-30 09:55:33 · 68 阅读 · 0 评论 -
Leetcode 12. 整数转罗马数字 (每日一题 20210827)
罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II。通...原创 2021-08-27 07:16:14 · 137 阅读 · 0 评论 -
Leetcode 415. 字符串相加 (每日一题 20210826 同类型题)
给定两个字符串形式的非负整数num1 和num2,计算它们的和。提示:num1 和num2的长度都小于 5100num1 和num2 都只包含数字0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式链接:https://leetcode-cn.com/problems/add-stringsclass Solution: def addStrings(self, num1: str...原创 2021-08-26 09:46:21 · 74 阅读 · 0 评论 -
Leetcode 989. 数组形式的整数加法 (每日一题 20210826 同类型题)
对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数 X 的数组形式A,返回整数X+K的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274 + 181 = 455示例 3:输入:A = [2,1...原创 2021-08-26 09:45:05 · 70 阅读 · 0 评论 -
Leetcode 67. 二进制求和 (每日一题 20210826)
给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字1和0。示例1:输入: a = "11", b = "1"输出: "100"示例2:输入: a = "1010", b = "1011"输出: "10101"链接:https://leetcode-cn.com/problems/add-binaryclass Solution: def addBinary(self, a: str, b: str) -> st...原创 2021-08-26 09:43:36 · 72 阅读 · 0 评论 -
Leetcode 剑指 Offer 40. 最小的k个数 (每日一题 20210825)
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]链接:https://leetcode-cn.com/problems/zui-xiao-de-kge-shu-lcofclass Solution: def getLe..原创 2021-08-25 15:41:13 · 75 阅读 · 0 评论 -
Leetcode 322. 零钱兑换 (每日一题 20210824)
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的。示例1:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coins = [1], amo...原创 2021-08-24 10:07:09 · 122 阅读 · 0 评论