![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode
力扣LeetCode刷题
laoyouzhazi
这个作者很懒,什么都没留下…
展开
-
单词之和
实现一个 MapSum 类,支持两个方法,insert和sum:MapSum() 初始化 MapSum 对象void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。示例:输入:inputs = ["MapSum", "inser...原创 2021-09-17 20:55:57 · 73 阅读 · 0 评论 -
神奇的字典
神奇的字典设计一个使用单词列表进行初始化的数据结构,单词列表中的单词 互不相同 。 如果给出一个单词,请判定能否只将这个单词中一个字母换成另一个字母,使得所形成的新单词存在于已构建的神奇字典中。实现 MagicDictionary 类:MagicDictionary() 初始化对象void buildDict(String[] dictionary) 使用字符串数组 dictionary 设定该数据结构,dictionary 中的字符串互不相同bool search(String searc.原创 2021-09-17 12:39:59 · 216 阅读 · 0 评论 -
删除最外层的括号
有效括号字符串为空 ""、"(" + A + ")"或A + B ,其中A 和B都是有效的括号字符串,+代表字符串的连接。例如,"","()","(())()"和"(()(()))"都是有效的括号字符串。如果有效字符串 s 非空,且不存在将其拆分为 s = A + B的方法,我们称其为原语(primitive),其中A 和B都是非空有效括号字符串。给出一个非空有效字符串 s,考虑将其进行原语化分解,使得:s = P_1 + P_2 + ... + P_k,其中P_i是...原创 2021-09-06 23:06:15 · 154 阅读 · 0 评论 -
同构字符串
给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以按某种映射关系替换得到t,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。示例 1:输入:s = "egg", t = "add"输出:true示例 2:输入:s = "foo", t = "bar"输出:false示例 3:输入:s = "paper...原创 2021-06-28 23:30:28 · 184 阅读 · 1 评论 -
LCS 下载插件
难度简单2收藏分享切换为英文接收动态反馈小扣打算给自己的VS code安装使用插件,初始状态下带宽每分钟可以完成1个插件的下载。假定每分钟选择以下两种策略之一:使用当前带宽下载插件 将带宽加倍(下载插件数量随之加倍)请返回小扣完成下载n个插件最少需要多少分钟。注意:实际的下载的插件数量可以超过n个示例 1:输入:n = 2输出:2解释:以下两个方案,都能实现 2 分钟内下载 2 个插件方案一:第一分钟带宽加倍,带宽可每分钟下载 2 个插件;第二分钟下载...原创 2021-06-28 23:19:17 · 201 阅读 · 0 评论 -
完成一半题目
有N位扣友参加了微软与力扣举办了「以扣会友」线下活动。主办方提供了2*N道题目,整型数组questions中每个数字对应了每道题目所涉及的知识点类型。若每位扣友选择不同的一题,请返回被选的N道题目至少包含多少种知识点类型。示例 1:输入:questions = [2,1,6,2]输出:1解释:有 2 位扣友在 4 道题目中选择 2 题。可选择完成知识点类型为 2 的题目时,此时仅一种知识点类型因此至少包含 1 种知识点类型。示例 2:输入:question...原创 2021-06-28 23:14:07 · 310 阅读 · 0 评论 -
下一个数
下一个数。给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。示例1:输入:num = 2(或者0b10)输出:[4, 1] 或者([0b100, 0b1])示例2:输入:num = 1输出:[2, -1]提示:num的范围在[1, 2147483647]之间;如果找不到前一个或者后一个满足条件的正数,那么输出 -1。来源:力扣(LeetCode)"""@author: MRN_6"""class Solut...原创 2020-11-04 21:23:05 · 289 阅读 · 0 评论 -
递归乘法
递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。示例1:输入:A = 1, B = 10输出:10示例2:输入:A = 3, B = 4输出:12提示:保证乘法范围不会溢出来源:力扣(LeetCode)"""@author: MRN_6"""class Solution: def multiply(self, A: int, B: int) -> int: ...原创 2020-11-04 20:43:14 · 923 阅读 · 0 评论 -
将数字变成0的操作次数
给你一个非负整数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-04 12:21:54 · 274 阅读 · 0 评论 -
拿硬币
桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。示例 1:输入:[4,2,1]输出:4解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。示例 2:输入:[2,3,10]输出:8限制:1 <= n <= 41 <= coins[i] <=来源:力扣(LeetCode)cla...原创 2020-11-03 21:53:42 · 153 阅读 · 0 评论 -
解压缩编码列表
给你一个以行程长度编码压缩的整数列表nums。考虑每对相邻的两个元素 [freq, val] = [nums[2*i], nums[2*i+1]](其中i >= 0),每一对都表示解压后子列表中有 freq个值为val的元素,你需要从左到右连接所有子列表以生成解压后的列表。请你返回解压后的列表。示例:输入:nums = [1,2,3,4]输出:[2,4,4,4]解释:第一对 [1,2] 代表着 2 的出现频次为 1,所以生成数组 [2]。第二对 [3,4] ...原创 2020-11-03 21:51:54 · 187 阅读 · 0 评论 -
宝石与石头
给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出: 0注意:S和J最多含有50个字母。J中的字符不重复。来源:力扣(LeetCode)...原创 2020-11-03 21:50:06 · 164 阅读 · 0 评论 -
按既定顺序创建目标数组
给你两个整数数组 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-03 21:45:00 · 708 阅读 · 0 评论 -
一维数组的动态和
给你一个数组 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-11-03 21:35:39 · 160 阅读 · 0 评论 -
好数对的数目
给你一个整数数组 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-11-03 21:32:09 · 116 阅读 · 0 评论 -
数组异或操作
给你两个整数,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...原创 2020-11-03 21:28:27 · 1281 阅读 · 0 评论 -
左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrlose"限制:1 <= k < s.length <= 10000 (来源:力扣 ...原创 2020-11-03 21:24:54 · 102 阅读 · 0 评论 -
十进制的反码
每个非负整数N都有其二进制表示。例如,5可以被表示为二进制"101",11 可以用二进制"1011"表示,依此类推。注意,除N = 0外,任何二进制表示中都不含前导零。二进制的反码表示是将每个1改为0且每个0变为1。例如,二进制数"101"的二进制反码为"010"。给你一个十进制数N,请你返回其二进制表示的反码所对应的十进制整数。示例 1:输入:5输出:2解释:5 的二进制表示为 "101",其二进制反码为 "010",也就是十进制中的 2 ...原创 2020-11-03 21:20:34 · 3361 阅读 · 0 评论 -
基本计算器 II
基本计算器 II[^1]实现一个基本的计算器来计算一个简单的字符串表达式的值。字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。示例 1:输入: “3+2*2”输出: 7示例 2:输入: " 3/2 "输出: 1示例 3:输入: " 3+5 / 2 "输出: 5说明:你可以假设所给定的表达式都是有效的。请不要使用内置的库函数 eval。class Solution: def calculate(self, s: str) -原创 2020-08-23 15:14:09 · 183 阅读 · 0 评论 -
括号生成
括号生成1数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]class Solution: def generateParenthesis(self, n: int): if n<=0: return [] elif n==1:原创 2020-08-22 22:03:44 · 87 阅读 · 0 评论 -
字母异位词分组:相同字母不同排列词
字母异位词分组1给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。"""@author: WowlNAN"""class Solution: def groupAnagrams(self, str原创 2020-08-21 13:15:56 · 689 阅读 · 0 评论 -
三数之和
三数之和1给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]class Solution: def threeSum(self, nums): if not nums:原创 2020-08-21 13:03:09 · 184 阅读 · 0 评论 -
不用加号的加法(链表)
# -*- coding: utf-8 -*-#!/usr/bin/env python"""Created on Fri Jul 24 13:31:55 2020@author: MRN_6@github: https://github.com/WowlNAN@blog: https://blog.csdn.net/qq_21264377"""'''面试题 17.01. 不用加号的加法设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。示例:输入: a =.原创 2020-07-24 23:07:30 · 157 阅读 · 0 评论 -
0~n-1中缺失的数字
# -*- coding: utf-8 -*-#!/usr/bin/env python"""Created on Sat Jul 25 15:05:58 2020@author: MRN_6@github: https://github.com/WowlNAN@blog: https://blog.csdn.net/qq_21264377""""""题目:0~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在.原创 2020-07-25 15:20:04 · 204 阅读 · 0 评论 -
SQL: 查找重复的电子邮箱
编写一个 SQL 查询,查找Person 表中所有重复的电子邮箱。示例:+----+---------+| Id | Email |+----+---------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |+----+---------+根据以上输入,你的查询应返回以下结果:+---------+| Email |+---------+| a@b.com |+---------+说明:所有电子邮箱都是小写字母...原创 2020-07-30 15:42:01 · 467 阅读 · 0 评论 -
不用加号的加法
# -*- coding: utf-8 -*-#!/usr/bin/env python"""Created on Fri Jul 24 13:31:55 2020@author: MRN_6@github: https://github.com/WowlNAN@blog: https://blog.csdn.net/qq_21264377"""'''面试题 17.01. 不用加号的加法设计一个函数把两个数字相加。不得使用 + 或者其他算术运算符。示例:输入: a =.原创 2020-07-24 16:24:45 · 208 阅读 · 0 评论 -
选出超过半数的主要元素
# -*- coding: utf-8 -*-#!/usr/bin/env python"""Created on Fri Jul 24 00:06:57 2020@author: MRN_6@github: https://github.com/WowlNAN@blog: https://blog.csdn.net/qq_21264377"""'''题目:数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入.原创 2020-07-24 00:22:24 · 181 阅读 · 0 评论 -
字符串转换整数 (atoi)--Python 3
8. 字符串转换整数 (atoi)请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该..原创 2020-07-21 00:47:40 · 239 阅读 · 0 评论 -
计算整数的二进制数中1的个数
请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。来源:力扣(LeetCode)打个比方说:输入 9,9/2=4–1,4/2=2–0,2/2=1—0,1/2=0–1看吧,结果似乎很明显。将余数按顺序排列:1001;输入 11, 11/2=5–1, 5/2=2–1, 2/2=1–0, 1/2=0–1余数顺序排列:1101神奇吧:)另一种类似的,因为除以2余数不是0就是1,所以直接加.原创 2020-07-23 15:58:10 · 359 阅读 · 0 评论 -
访问所有坐标点的最小时间
平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。你可以按照下面的规则在平面上移动:每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。必须按照数组中出现的顺序来访问这些点。来源:力扣(LeetCode)示例 2:输入:points = [[1,1],[3,4],[-1,0]] 输出:7 解释:一条最佳的访问路径是: [1,1] -> [.原创 2020-07-23 12:04:05 · 122 阅读 · 0 评论 -
删除中间节点
实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c 结果:不返回任何数据,但该链表变为a->b->d->e->f来源:力扣(LeetCode)这是单向链表的基本特点,也说是优点:操作简单。共计两行代码。原理很简单,先取下一节点的值,把下一节点的索引保存。# -*- coding: utf-8 -*-#!/usr/bin/env p.原创 2020-07-23 11:38:34 · 161 阅读 · 0 评论 -
旅行终点站
给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。题目数据保证线路图会形成一条不存在循环的线路,因此只会有一个旅行终点站。示例 1:输入:paths = [[“London”,“New York”],[“New York”,“Lima”],[“Lima”,“SaoPaulo”]] 输出:“Sao.原创 2020-07-23 11:25:56 · 224 阅读 · 0 评论 -
机器人能否返回原点
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。示例 1:输入: “UD.原创 2020-07-23 11:14:58 · 498 阅读 · 0 评论 -
解码字母到整数映射
给你一个字符串 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-07-23 11:00:32 · 368 阅读 · 0 评论 -
唯一摩尔斯密码词
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串,比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。为了方便,所有26个英文字母对应摩尔斯密码表如下:[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-..原创 2020-07-23 10:48:40 · 356 阅读 · 0 评论 -
非递减数组
665. 非递减数列难度:简单题目:给你一个长度为n的整数数组,请你判断在 最多 改变1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输入: nums = [4,2,1...原创 2020-07-22 15:08:58 · 974 阅读 · 0 评论 -
寻找最近的回文数的最小值
564. 寻找最近的回文数给定一个整数 n ,你需要找到与它最近的回文数(不包括自身)。“最近的”定义为两个整数差的绝对值最小。示例 1:输入: "123"输出: "121"注意:n 是由字符串表示的正整数,其长度不超过18。如果有多个结果,返回最小的那个。代码:# -*- coding: utf-8 -*-#!/usr/bin/env python"""Created on Tue Jul 21 12:10:35 2020@author: MRN_6原创 2020-07-22 00:19:18 · 697 阅读 · 0 评论 -
换酒问题
1518. 换酒问题小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。输入:numBottles = 15, numExchange = 4输出:19解释:你可以用 4 个空酒瓶兑换 1 瓶酒。所以最多能喝到 15 + 3 + 1 = 19 瓶酒。# -*- coding: utf-8 -*-#!/usr/bin/env python原创 2020-07-21 01:10:13 · 206 阅读 · 0 评论 -
重复 N 次的元素
重复 N 次的元素1在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。返回重复了 N 次的那个元素。示例 1:输入:[1,2,3,3]输出:3示例 2:输入:[2,1,2,5,3,2]输出:2示例 3:输入:[5,1,5,2,5,3,5,4]输出:5提示:4 <= A.length <= 100000 <= A[i] < 10000A.length 为偶数1# -*- coding: utf-8 -*-#!/usr原创 2020-08-18 23:36:33 · 193 阅读 · 0 评论 -
找到小镇的法官
找到小镇的法官1在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足属性 1 和属性 2 。给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b 的人。如果小镇存在秘密法官并且可以确定他的身份,请返回该法官的标记。否则,返回 -1。示例 1:输入:N = 2, trust =原创 2020-08-18 23:32:41 · 149 阅读 · 0 评论