
leetcode
兔兔RabbitMQ!!!
本人在腾讯总部工作,csdn博客专家,acm退役菜鸡,leetcode刷题狂,c++/Java/python/go/php各种后端语言都喜欢玩,安卓、node、叶子、jsp等前端也能写,最喜欢鼓捣各种组件(虽然没人用hhhh),各位请多指教。
-
原创 leetcode771. 宝石与石头 py永远的神!
给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数) 2 是 1 位数字(位数为奇数)6 是 1 位数字 位数为奇数)7896 是 4 位数字(位数为偶数) 因此只有 12 和 7896 是位数为偶数的数字示例 2:输入:nums = [555,901,482,1771]输出:1解释:只...2020-07-19 20:41:01819
51
-
原创 leetcode771. 宝石与石头
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出: 0注意: S 和 J 最多含有50个字母。 J 中的字符不重复。...2020-07-19 20:37:36444
0
-
原创 leetcode1119. 删去字符串中的元音 小学难度
给你一个字符串 S,请你删去其中的所有元音字母( 'a','e','i','o','u'),并返回这个新字符串。示例 1:输入:"leetcodeisacommunityforcoders"输出:"ltcdscmmntyfrcdrs"示例 2:输入:"aeiou"输出:""提示: S 仅由小写英文字母组成。 1 <= S.length <= 1000遍历或者replaceallclass Solution { publ...2020-07-19 20:35:21600
0
-
原创 leetcode1299. 将每个元素替换为右侧最大元素
给你一个数组 arr ,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用 -1 替换。完成所有替换操作后,请你返回这个数组。示例:输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]提示: 1 <= arr.length <= 10^4 1 <= arr[i] <= 10^5逆序遍历,记录之前答案,和当前元素比对即可。class Solution: def replace...2020-07-19 20:32:41349
0
-
原创 leetcode709. 转换成小写字母 最秀狼人做法(比狠多一点)
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例 3:输入: "LOVELY"输出: "lovely"一个一个的比着换,狠不狠。class Solution: def toLowerCase(self, str: str) -> str: st.2020-07-19 20:25:241477
61
-
原创 leetcode1085. 最小元素各数位之和 py不止是字符串的神!
给你一个正整数的数组 A。然后计算 S,使其等于数组 A 当中最小的那个元素各个数位上数字之和。最后,假如 S 所得计算结果是 奇数 的请你返回 0,否则请返回 1。示例 1:输入:[34,23,1,24,75,33,54,8]输出:0解释:最小元素为 1,该元素各个数位上的数字之和 S = 1,是奇数所以答案为 0。示例 2:输入:[99,77,33,66,55]输出:1解释:最小元素为 33,该元素各个数位上的数字之和 S = 3 + 3 = 6,是偶数所以答.2020-07-19 20:22:54768
22
-
原创 leetcode1207. 独一无二的出现次数
给你一个整数数组 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..2020-07-19 20:20:05308
0
-
原创 leetcode1491. 工资平均值 这也叫题?也太简单了吧
给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。示例 1:输入:salary = [4000,3000,1000,2000]输出:2500.00000解释:最低工资和最高工资分别是 1000 和 4000 。去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500示例 2:输入:salary = [1000,2000,3000]输.2020-07-19 20:15:23512
30
-
原创 leetcode559. N叉树的最大深度
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 :我们应返回其最大深度,3。说明: 树的深度不会超过 1000。 树的节点总不会超过 5000。思路见代码/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node...2020-07-19 20:12:59263
0
-
原创 leetcode933. 最近的请求次数
写一个 RecentCounter 类来计算最近的请求。它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。返回从 3000 毫秒前到现在的 ping 数。任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。保证每次对 ping 的调用都使用比之前更大的 t 值。示例:输入:inputs = ["RecentCounter","ping","ping","ping","ping"], .2020-07-19 20:10:48278
0
-
原创 leetcode700. 二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。就是搜索树的查找。/**...2020-07-05 16:34:44367
2
-
原创 leetcode645. 错误的集合
645. 错误的集合难度简单98集合S包含从1到n的整数。不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复。给定一个数组nums代表了集合S发生错误后的结果。你的任务是首先寻找到重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入: nums = [1,2,2,4]输出: [2,3]注意:给定数组的长度范围是[2, 10000]。 给定的数组是无序的。记录出...2020-07-05 16:20:57334
1
-
原创 leetcode485. 最大连续1的个数 *py:“又是一行就解决了,没意思”
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含0 和1。输入数组的长度是正整数,且不超过 10,000。思路:先拼成字符串,然后按0分割,再取最大长度即可。class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: .2020-06-25 16:48:0410583
99
-
原创 leetcode面试题 02.08. 环路检测
给定一个有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tail connects to node index 0解释:链表中有一个环,其尾部连接到第一个2020-06-14 18:41:13552
1
-
原创 leetcode445. 两数相加 II
给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 7思路:放入栈中再相加。/** * Definit2020-06-06 02:57:407637
54
-
原创 leetcode359. 日志速率限制器
请你设计一个日志系统,可以流式接收日志以及它的时间戳。该日志会被打印出来,需要满足一个条件:当且仅当日志内容在过去的 10 秒钟内没有被打印过。给你一条日志的内容和它的时间戳(粒度为秒级),如果这条日志在给定的时间戳应该被打印出来,则返回true,否则请返回false。要注意的是,可能会有多条日志在同一时间被系统接收。示例:Logger logger = new Logger();// 日志内容 "foo" 在时刻 1 到达系统logger.shouldPrintMessag...2020-05-30 17:44:579081
84
-
原创 leetcode412. Fizz Buzz
写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果n是3的倍数,输出“Fizz”;2. 如果n是5的倍数,输出“Buzz”;3.如果n同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz",...2020-05-30 17:33:438572
53
-
转载 leetcode258. 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?时间复杂度为O(1)的解法:除个位外,每一位上的值都是通过(9+1)进位的过程得到的,想一下拨算盘进位把整数n看成n样物品,原本是以10个1份打包的,现在从这些10个1份打包好的里面,拿出1个,让它们以9..2020-05-30 17:13:031847
6
-
原创 leetcode193. 有效电话号码 正则了解一下
给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或xxx-xxx-xxxx。(x 表示一个数字)你也可以假设每行前后没有多余的空格字符。示例:假设file.txt内容如下:987-123-4567123 456 7890(123) 456-7890你的脚本应当输出下列有效的电话号码:987-123-4567(123) ...2020-05-30 17:11:00506
0
-
原创 leetcode369. 给单链表加一
用一个 非空 单链表来表示一个非负整数,然后将这个整数加一。你可以假设这个整数除了 0 本身,没有任何前导的 0。这个整数的各个数位按照 高位在链表头部、低位在链表尾部的顺序排列。示例:输入: [1,2,3]输出: [1,2,4]思路:help():计算本位的数字,然后返回进位(0或1)plusOne():因为help方法无法判断自己是否是最高位,所以在本方法中做一下处理。如果有进位,就再加一位最高的1即可。/** * Definition for singly-li.2020-05-30 14:21:50561
0
-
原创 leetcode557. 反转字符串中的单词 III python,处理字符串的神!
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。思路:python处理,先split分割为列表,再用列表生成式把每一项翻转,再用join拼起来即可。class Solution: def reverseWords(self,..2020-05-28 23:43:2610177
97
-
原创 go语言快速刷《程序员面试金典》(3)
编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。示例:输入: head = 3->5->8->5->10->2->1, x = 5输出: 3->1->2->10->5->5->8一趟分离,然后连起来即可。/** * Definition f2020-05-18 22:44:175862
53
-
原创 go语言快速刷《程序员面试金典》(2)
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1输入:s1 = "waterbottle", s2 = "erbottlewat"输出:True示例2输入:s1 = "aa", "aba"输出:Falsefunc isFlipedString(s1 string, s2 string) bool { return len(s1) == len(s2) &&.2020-05-18 20:02:449828
75
-
原创 go语言快速刷《程序员面试金典》(1)
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。一个数组统计是否有func isUnique(astr string) bool { var arr[26] int; for _,ch:=range astr{ num:=ch-'a' if(arr[num]==1){ return false } arr[num]++ } return true}给定两个字符串2020-05-18 19:21:335400
42
-
原创 leetcode912. 排序数组 有范围的排序统统用桶排序
给你一个整数数组nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000-50000 <= nums[i] <= 50000有范围的排序统统...2020-05-07 21:23:091292
2
-
原创 leetcode1103. 分糖果 II 该模拟就模拟,别老想着优化
排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n+ 1 颗糖果,第二个小朋友 n+ 2 颗,依此类推,直到给最后一个小朋友 2 * n颗糖果。重复上述过程(每次都比上一次多...2020-05-07 21:18:27524
0
-
原创 leetcode914. 卡牌分组
给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有X张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入...2020-05-07 17:19:371211
0
-
原创 leetcode892. 三维形体的表面积
在N*N的网格上,我们放置一些1 * 1 * 1的立方体。每个值v = grid[i][j]表示v个正方体叠放在对应单元格(i, j)上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1,1...2020-05-07 17:08:003181
1
-
原创 leetcode590. N叉树的后序遍历
给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个3叉树:思路:先遍历所有孩子,再放入自己。/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} public Node(...2020-04-28 23:34:501114
15
-
原创 leetcode589. N叉树的前序遍历
给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个3叉树:返回其前序遍历:[1,3,5,6,2,4]。思路:先放入自己,再依次遍历孩子。/*// Definition for a Node.class Node { public int val; public List<Node> children; public No...2020-04-28 23:32:241042
1
-
原创 leetcode551. 学生出勤记录 I
给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:'A' : Absent,缺勤'L' : Late,迟到'P' : Present,到场如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。你需要根据这个学生的出勤记录判断他是否会被奖赏。示例 1:输入: "PPALLP"输出: True示例 2:...2020-04-28 23:29:111746
1
-
原创 leetcode520. py解字符串真是太残暴了
给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写,比如"Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"...2020-04-28 23:23:134846
69
-
原创 leetcode509. 斐波那契数(矩阵快速幂)
斐波那契数,通常用F(n) 表示,形成的序列称为斐波那契数列。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定N,计算F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1....2020-04-28 23:18:511385
4
-
原创 【大总结3】leetcode解题总览(算法、剑指offer、SQL、多线程、shell)
SQL大部分是付费题目,可以看我的做题记录,目前做了一半(50题),另一半我觉得做出来对我个人的提升较小了,所以暂时没有做。leetcode175. 组合两个表(SQL)leetcode176. 第二高的薪水leetcode 178. 分数排名(SQL)leetcode180. 连续出现的数字(SQL)leetcode181. 超过经理收入的员工(SQL)leetcod...2020-03-22 18:12:3528677
336
-
原创 剑指offer:63-66记录
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6...2020-03-10 18:04:567738
29
-
原创 剑指offer:55-58记录
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。思路:递归/** * Definition for a binary tree...2020-03-10 17:40:445478
7
-
原创 剑指offer:50-53记录
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。示例:s = "abaccdeff"返回 "b"s = ""返回 " "限制:0 <= s 的长度 <= 50000思路:map记录次数,再次遍历找出次数1的。class Solution { public char firstUniqChar(String s) {...2020-03-10 17:16:413878
0
-
原创 剑指offer:45-48记录
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例2:输入: [3,30,34,5,9]输出: "3033459"提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0...2020-03-10 16:37:357749
8
-
原创 剑指offer:39-42记录
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1 <= 数组长度 <= 50000思路:打擂台法:擂主和打擂者不一样,就减一条命。擂主和打擂者一样,就加一条命。擂主生命被减为0,就下台,由挑...2020-03-10 16:08:563744
0
-
原创 剑指offer:33-37记录
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true提示...2020-03-10 12:42:4710053
26