
leetcode(力扣分享)
文章平均质量分 68
力扣各种题目分享
小苑同学
这个作者很懒,什么都没留下…
展开
-
Leetcode:(剑指offer 04)二维数组中的查找
1 题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true原创 2021-03-11 21:54:37 · 224 阅读 · 0 评论 -
用两个队列实现一个栈
用两个栈实现一个队列.1 解题思路我们通过一系列栈的压入和弹出操作来分析两个队列模拟一个栈的过程。如下图(a)所示,我们先往栈内压入一个元素a,由于两个队列现在都是空的,我们可以选择把a插入两个队列中的任意一个,我们不妨把a插入queue1。接下来继续往栈内压入b、c两个元素,我们把他们都插入queue1。这时候queue1包含三个元素a、b和c,其中a位于队列的头部,c位于队列的尾部。现在我们考虑从栈内弹出一个元素。根据栈的后入先出原则,最后被压入栈的c应该最先被弹出。由于c位于queue1的尾部原创 2021-03-11 09:27:57 · 383 阅读 · 0 评论 -
Leetcode:(剑指offer 09)用两个栈实现队列
1 题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“deleteHead”,“appendTa原创 2021-03-10 21:35:58 · 148 阅读 · 0 评论 -
Leetcode:(1370) 上升下降字符串-------python
1 题目描述给你一个字符串 s ,请你根据下面的算法重新构造字符串:从 s 中选出 最小 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最小 的字符,且该字符比上一个添加的字符大,将它 接在 结果字符串后面。重复步骤 2 ,直到你没法从 s 中选择字符。从 s 中选出 最大 的字符,将它 接在 结果字符串的后面。从 s 剩余字符中选出 最大 的字符,且该字符比上一个添加的字符小,将它 接在 结果字符串后面。重复步骤 5 ,直到你没法从 s 中选择字符。重复步骤 1 到 6 ,原创 2020-12-09 14:10:56 · 143 阅读 · 0 评论 -
Leetcode:(1636) 按照频率将数组升序排序-------python
1 题目描述给你一个整数数组 nums ,请你将数组按照每个值的频率 升序 排序。如果有多个值的频率相同,请你按照数值本身将它们 降序 排序。请你返回排序后的数组。示例 1:输入:nums = [1,1,2,2,2,3]输出:[3,1,1,2,2,2]解释:‘3’ 频率为 1,‘1’ 频率为 2,‘2’ 频率为 3 。示例 2:输入:nums = [2,3,1,3,2]输出:[1,3,3,2,2]解释:‘2’ 和 ‘3’ 频率都为 2 ,所以它们之间按照数值本身降序排序。示例 3:输原创 2020-12-09 14:09:07 · 486 阅读 · 0 评论 -
Leetcode:(1374) 生成每种字符都是奇数个的字符串-------python
1 题目描述给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。示例 1:输入:n = 4输出:“pppz”解释:“pppz” 是一个满足题目要求的字符串,因为 ‘p’ 出现 3 次,且 ‘z’ 出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:“ohhh” 和 “love”。示例 2:输入:n = 2输出:“xy”解释:“xy” 是一个满原创 2020-12-09 14:05:44 · 185 阅读 · 0 评论 -
Leetcode:(1356)根据数字二进制下 1 的数目排序-------python
1 题目描述给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。如果存在多个数字二进制中 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 的个数排序得到的结果数组原创 2020-12-09 14:02:14 · 224 阅读 · 0 评论 -
Leetcode:(1323) 6 和 9 组成的最大数字-------python
1 题目描述给你一个仅由数字 6 和 9 组成的正整数 num。你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。请返回你可以得到的最大数字。示例 1:输入:num = 9669输出:9969解释:改变第一位数字可以得到 6669 。改变第二位数字可以得到 9969 。改变第三位数字可以得到 9699 。改变第四位数字可以得到 9666 。其中最大的数字是 9969 。示例 2:输入:num = 9996输出:9999解释:将最后一位从 6 变到 9,其结果原创 2020-12-09 13:55:34 · 444 阅读 · 0 评论 -
Leetcode:(1309) 解码字母到整数映射-------python
1 题目描述给你一个字符串 s,它由数字(‘0’ - ‘9’)和 ‘#’ 组成。我们希望按下述规则将 s 映射为一些小写英文字符:字符(‘a’ - ‘i’)分别用(‘1’ - ‘9’)表示。字符(‘j’ - ‘z’)分别用(‘10#’ - ‘26#’)表示。返回映射之后形成的新字符串。题目数据保证映射始终唯一。示例 1:输入:s = “10#11#12”输出:“jkab”解释:“j” -> “10#” , “k” -> “11#” , “a” -> “1” , “b” -原创 2020-12-09 13:50:52 · 427 阅读 · 0 评论 -
Leetcode:(1299) 将每个元素替换为右侧最大元素-------python
1 题目描述给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组。示例:输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]提示:1 <= arr.length <= 10^41 <= arr[i] <= 10^52 解题思路使用列表的切片,找到右边数字的最大。3 代码class Solution(object): def replaceE原创 2020-11-28 20:52:50 · 175 阅读 · 1 评论 -
Leetcode:(1295) 统计位数为偶数的数字-------python
1 题目描述给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数)2 是 1 位数字(位数为奇数)6 是 1 位数字 位数为奇数)7896 是 4 位数字(位数为偶数)因此只有 12 和 7896 是位数为偶数的数字2 解题思路把数组中的每个元素转变成字符串,然后计算出每个字符串的长度,判断这个长度是偶数还是奇数即可。3原创 2020-11-28 20:49:48 · 212 阅读 · 0 评论 -
Leetcode:(1207) 独一无二的出现次数-------python
1 题目描述给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]输出:true提示:1 &l原创 2020-11-28 20:43:54 · 215 阅读 · 0 评论 -
Leetcode:(657) 机器人能否返回原点-------python
1 题目描述在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。示例 1:输入:原创 2020-11-28 20:23:43 · 189 阅读 · 0 评论 -
Leetcode:(1266) 访问所有点的最小时间-------python
1 题目描述平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。你可以按照下面的规则在平面上移动:每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。必须按照数组中出现的顺序来访问这些点。示例 1:输入:points = [[1,1],[3,4],[-1,0]]输出:7解释:一条最佳的访问路径是: [1,1] -> [2,2] -> [原创 2020-11-21 17:14:34 · 156 阅读 · 0 评论 -
Leetcode:(1342) 将数字变成 0 的操作次数------python
1 题目描述给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。示例 1:输入:num = 14输出:6解释:步骤 1) 14 是偶数,除以 2 得到 7 。步骤 2) 7 是奇数,减 1 得到 6 。步骤 3) 6 是偶数,除以 2 得到 3 。步骤 4) 3 是奇数,减 1 得到 2 。步骤 5) 2 是偶数,除以 2 得到 1 。步骤 6) 1 是奇数,减 1 得到 0 。示例 2:输入:num = 8原创 2020-11-21 16:45:39 · 214 阅读 · 0 评论 -
Leetcode:(1365) 有多少小于当前数字的数字-------python
1 题目描述给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释:对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[1]=1 不存在比它小的数字。对于 nums原创 2020-11-21 15:09:27 · 162 阅读 · 0 评论 -
Leetcode:(1614)括号的最大嵌套深度-------python
1 题目描述如果字符串满足一下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):字符串是一个空字符串 “”,或者是一个不为 “(” 或 “)” 的单字符。字符串可以写为 AB(A 与 B 字符串连接),其中 A 和 B 都是 有效括号字符串 。字符串可以写为 (A),其中 A 是一个 有效括号字符串 。类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):depth("") = 0depth© = 0,其中 C 是原创 2020-11-21 13:42:09 · 864 阅读 · 0 评论 -
Leetcode:(1588)所有奇数长度子数组的和-------python
1 题目描述给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1:输入:arr = [1,4,2,5,3]输出:58解释:所有奇数长度子数组和它们的和为:[1] = 1[4] = 4[2] = 2[5] = 5[3] = 3[1,4,2] = 7[4,2,5] = 11[2,5,3] = 10[1,4,2,5,3] = 15我们将所有值求和得到 1 + 4 + 2原创 2020-11-19 20:00:34 · 387 阅读 · 0 评论 -
Leetcode:(1389)按既定顺序创建目标数组-------python
1 题目描述给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:目标数组 target 最初为空。按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。重复上一步,直到在 nums 和 index 中都没有要读取的元素。请你返回目标数组。题目保证数字插入位置总是存在。示例 1:输入:nums = [0,1,2,3,4], index = [0,1,2,2,1]输出:[0,4,1,原创 2020-11-19 18:47:47 · 167 阅读 · 0 评论 -
Leetcode:(1603)设计停车系统-------python
1 题目描述请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。请你实现 ParkingSystem 类:ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数目。bool addCar(int carType) 检查是否有 carType 对应的停车位。 carType 有三种类型:大,中,小,分别用数字 1, 2 和 3 表示。一辆车原创 2020-11-19 18:40:55 · 414 阅读 · 0 评论 -
Leetcode:(1431)拥有最多糖果的孩子-------python
给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1: 输入:candies = [2,3,5,1,3], extraCandies = 3 输出:[true,true,true,false,true] 解释: 孩子 1 有原创 2020-09-12 20:51:07 · 197 阅读 · 0 评论 -
Leetcode:(14) 最长公共前缀-------python
1 题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。2 解题思路使用zip()函数来遍历每个字符串相同位置的字符并把它们合成一个元组,然后再利用set函数来判断这几个字符是否是同一个字符。3 代码// A原创 2020-11-16 17:19:00 · 84 阅读 · 0 评论 -
Leetcode:(LCP 06)拿硬币-------python
1 题目描述桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。示例 1:输入:[4,2,1]输出:4解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。示例 2:输入:[2,3,10]输出:8限制:1 <= n <= 41 <= coins[i] <= 102 解题思路题目的意思就是如果两个和两个以上的可以两个两原创 2020-09-27 16:05:21 · 413 阅读 · 0 评论 -
Leetcode:(771)两数之和-------python
1 题目描述给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。2 解题思路对于S中得每个元原创 2020-09-27 15:37:36 · 126 阅读 · 0 评论 -
Leetcode:(LCP 01) 猜数字-------python
1 题目描述小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。示例 1:输入:guess = [1,2,3], answer = [1,2,3]输出:3解释:小A 每次都猜对了。示例 2:输入:guess = [2,2,3], answer = [3,2原创 2020-09-27 14:59:51 · 192 阅读 · 0 评论 -
Leetcode:(1486)数组异或操作-------python
1 题目描述给你两个整数,n 和 start 。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或(XOR)后得到的结果。示例 1:输入:n = 5, start = 0输出:8解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8 。“^” 为按位异或 XOR 运算符。示例 2:输入:n = 4, start = 3输原创 2020-09-27 14:50:05 · 308 阅读 · 0 评论 -
Leetcode:(13)罗马数字转整数-------python
1 题目描述罗马数字包含以下七种字符: 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原创 2020-09-27 14:45:35 · 85 阅读 · 0 评论 -
Leetcode:(9)回文数-------python
1 题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。2 解题思路直接把数字转成字符类型,然后比较转之后的s和反转之后的s[::-1]是否相等,相等就是回文数。3原创 2020-09-27 14:39:31 · 97 阅读 · 0 评论 -
Leetcode:(7)整数反转-------python
1 题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。2 解题思路首先判断数字是正数还是负数,如果是负数,需要把“-”先拿出来,然后再对剩下的数字转成字符串,根据字符的切片操作str原创 2020-09-27 14:22:37 · 142 阅读 · 0 评论 -
Leetcode:(1)两数之和-------python
1 题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]2 解题思路可以创建一个字典dict1,对于数组中每个元素的数组i,它对应的另一个整数为dict1[num[i]]=targ原创 2020-09-27 10:29:19 · 89 阅读 · 0 评论 -
Leetcode:(剑指 Offer 58 - II.)左旋转字符串-------python
1 题目描述字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = “abcdefg”, k = 2输出: “cdefgab”示例 2:输入: s = “lrloseumgh”, k = 6输出: “umghlrlose”限制:1 <= k < s.length <= 100002 解题思路就是字符原创 2020-09-13 11:21:40 · 232 阅读 · 0 评论 -
Leetcode:(1512) 好数对的数目-------python
1 题目描述给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1,2,3]原创 2020-09-13 10:58:00 · 398 阅读 · 0 评论 -
Leetcode:(1480)一维数组的动态和-------python
1 题目描述给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1原创 2020-09-12 21:19:46 · 903 阅读 · 0 评论 -
Leetcode:(1470)重新排列数组-------python
1 题目描述给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入: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]示例 2:输入:nums = [1,2,3,4,4,3,原创 2020-09-12 21:07:42 · 238 阅读 · 0 评论