每日一练
KID-19
憨憨
展开
-
213.打家劫舍Ⅱ
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻原创 2021-07-28 11:05:58 · 102 阅读 · 0 评论 -
132模式
给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4]输出:false解释:序列中不存在 132 模式的子序列。示例 2:输入:nums = [3,原创 2021-07-21 22:43:46 · 197 阅读 · 0 评论 -
264.丑数Ⅱ
给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ugly-number-ii在解答这道题目之前我们首先看看什么是丑数。如题目所原创 2021-07-14 10:23:39 · 163 阅读 · 0 评论 -
73.矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]来源:力扣(LeetCode)链接:https://leetcode-cn.co原创 2021-03-21 10:27:15 · 176 阅读 · 0 评论 -
150.逆波兰表达式求值
根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,"+",“3”,"*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = [“4”,“13”,“5”,"/","+"]输出:6解释原创 2021-03-20 17:38:52 · 166 阅读 · 0 评论 -
螺旋矩阵2.0
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]思路:首先,建立n阶的多维0矩阵,注意不能使用[[0]*n]*n,因为这种方法形成的行向量均存在同一地址。将坐标设为x,y,当循环次数为圈数,初始p为1,每次将p存入矩阵中后p+1。当遍历圈数为第一行时,每次y+1,最后一列时x+1,最后一原创 2021-03-16 22:43:37 · 82 阅读 · 0 评论 -
螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/spi原创 2021-03-15 20:22:08 · 233 阅读 · 0 评论 -
724.寻找数组的中心索引
给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 :输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 11) 相等。同原创 2021-01-28 10:03:36 · 64 阅读 · 0 评论 -
1128.等价多米诺骨牌对的数量
给你一个由一些多米诺骨牌组成的列表 dominoes。如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 ac 且 bd,或是 ad 且 bc。在 0 <= i < j < dominoes.length 的前提下,找出满足 dominoes[i] 和 dominoes[j] 等价的骨牌对 (i, j) 的数量。示例:原创 2021-01-26 16:28:50 · 82 阅读 · 0 评论 -
674.最长连续递增序列
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。示例 :输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,5], 长度为3。尽管原创 2021-01-24 20:03:23 · 79 阅读 · 0 评论 -
989.数组形式的整数加法
对于非负整数 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来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer提供两种思原创 2021-01-22 12:18:48 · 335 阅读 · 0 评论 -
628.三个数的最大乘积
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers分为该数组包含负数及不包含负数两种情况先将原数组排序,返回的最大值仅有可能是最大的三个数乘积或最小的两个负数乘积再乘上最大的数,所以代码很简单:class Solu原创 2021-01-20 10:17:25 · 64 阅读 · 0 评论 -
509.斐波那契数列
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fibonacci-number刚入门递归写的基本都是斐波那契数列吧…属于较为基本的内容了,这里多提供几种方法供参原创 2021-01-04 11:28:10 · 169 阅读 · 0 评论 -
435.无重叠区域
给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/non-overlapping-intervals法1:思路 将二维列表原创 2020-12-31 11:07:29 · 101 阅读 · 0 评论 -
205.同构字符串
给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。示例 1:输入:s = “egg”, t = “add”输出:true示例 2:输入:s = “foo”, t = “bar”输出:false来源:力扣(LeetCode)链接:https://leetcode-cn原创 2020-12-30 11:20:29 · 60 阅读 · 0 评论 -
1046.最后一块石头的重量
有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到 1,所以数组转换为原创 2020-12-30 10:39:48 · 66 阅读 · 0 评论 -
分发饼干python
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。题目看起来蛮晕的,看一下示例就能明白啦示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和原创 2020-12-25 11:27:09 · 564 阅读 · 0 评论 -
字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string用了两种方法求解这个问题法一基本思路。。。想了半天不知道怎么说明,那就看代码吧,理论上最多26次循环就能结束class Solution:原创 2020-12-23 12:28:43 · 246 阅读 · 2 评论 -
用最少数量的剑引爆气球
在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆,所需的弓箭原创 2020-11-24 21:01:48 · 264 阅读 · 0 评论 -
有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-anagramclass Solution: def isAnagram(self, s: str, t: str) ->原创 2020-11-22 18:06:25 · 62 阅读 · 0 评论 -
移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。输入: [0,1,0,3,12]输出: [1,3,12,0,0]遍历数组,每次遍历后pop出0,之后再在原数组上追加pop出的0即可class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place inst原创 2020-11-19 21:55:55 · 89 阅读 · 0 评论 -
距离顺序排列矩阵单元格
给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)输入:R = 1, C = 2, r0 = 0原创 2020-11-18 10:58:56 · 149 阅读 · 0 评论 -
移掉k位数字
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。输入: num = “1432219”, k = 3输出: “1219”解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。输入: num = “10”, k = 2输出: “0”解释: 从原数字移除所有的数字,剩余为空就是0。输入: num = “10200”, k = 1输出: “200”解原创 2020-11-16 22:08:10 · 396 阅读 · 1 评论 -
按奇偶排序数组
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii法一:clas原创 2020-11-13 21:19:56 · 250 阅读 · 0 评论 -
每日一练
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-permutation基本思路是将列表从后往前部分遍历,原创 2020-11-11 08:51:00 · 113 阅读 · 0 评论 -
每日一练
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。输入: -123输出: -321输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-integerclass Solution: def reverse(self,原创 2020-11-10 15:37:33 · 123 阅读 · 0 评论 -
每日一练
实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sqrtx试了好几种法,暴力遍历,二分,猴排啥的,能过得也就二分了…class Solution: def mySqrt(self,原创 2020-11-07 20:04:50 · 133 阅读 · 0 评论 -
每日一练
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组输入:arr = [0,1,2,3,4,5,6,7,8]输出:[0,1,2,4,8,3,5,6,7]解释:[0] 是唯一一个有 0 个 1 的数。[1,2,4,8] 都有 1 个 1 。[3,5,6] 有 2 个 1 。[7] 有 3 个 1 。按照 1 的个数排序得到的结果数组为 [0,1,2,4,8,3原创 2020-11-06 22:11:58 · 109 阅读 · 0 评论 -
每日一练
给你一个整数数组 arr ,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是,不允许 对每个数组 pieces[i] 中的整数重新排序。如果可以连接 pieces 中的数组形成 arr ,返回 true ;否则,返回 false 。输入:arr = [91,4,64,78], pieces = [[78],[4,64],[91]]输出:true解释:依次连接 [91]、[4,64]原创 2020-11-05 20:16:07 · 121 阅读 · 0 评论 -
每日一练
给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7]解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com原创 2020-11-05 08:39:04 · 126 阅读 · 0 评论 -
每日一练
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/698a4b324e8409edca591bd43905a57f.png#pic_center让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < …原创 2020-11-03 17:00:44 · 113 阅读 · 0 评论 -
每日一练
给定两个数组,编写一个函数来计算它们的交集。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。这个题蛮简单的,也不多说啥,试了蛮多种法,然后发现他相同代码测试多次时的用时和内存消耗是不一样的…class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:原创 2020-11-02 20:34:58 · 715 阅读 · 0 评论 -
每日一练
给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。输入:[[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]输出: 16解释: 它原创 2020-11-01 16:07:29 · 207 阅读 · 0 评论 -
每日一练
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sumclass Solution:原创 2020-10-31 21:35:01 · 70 阅读 · 0 评论 -
每日一练
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。输入:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少来源:力扣(LeetCode)链接:https://原创 2020-10-28 08:47:28 · 105 阅读 · 0 评论 -
每日一练
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses思路:定义字符串s为括号字符串,其中每次遇到左括号,接下来必定不会遇到非相同种类的右括号,可以以此来排除所有的错误答案。原本是想写一个遍历字符,找到与原创 2020-10-27 19:44:39 · 108 阅读 · 0 评论