![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
垃圾桶随意收
这个作者很懒,什么都没留下…
展开
-
Leetcode:回文数
题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121 输出:true示例 2:输入:x = -121 输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例3:输入:x = 10 输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。示原创 2021-08-27 21:21:29 · 126 阅读 · 0 评论 -
LeetCode:整数反转
题目给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123 输出:321示例 2:输入:x = -123 输出:-321示例 3:输入:x = 120 输出:21示例 4:输入:x = 0 输出:0解题思路方法1(除余):(1)如果绝对值小于10,直接return;(2)先原创 2021-08-26 21:38:15 · 139 阅读 · 0 评论 -
LeetCode:两数之和
题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] ==9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], targ原创 2021-08-25 21:20:54 · 112 阅读 · 0 评论 -
LeetCode:存在重复元素
题目给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 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解题思路1、set()可以去掉重复的元素,如果有相同元素的话set一定会比原列表长度短代码实现class Solution: def原创 2021-08-25 21:08:26 · 86 阅读 · 0 评论 -
Leetcode:查找重复的电子邮箱
题目编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:±—±--------+| Id | Email |±—±--------+| 1 | a@b.com || 2 | c@d.com || 3 | a@b.com |±—±--------+根据以上输入,你的查询应返回以下结果:±--------+| Email |±--------+| a@b.com |±--------+代码实现解法1:select distinct p1.e原创 2021-08-23 22:12:58 · 131 阅读 · 0 评论 -
LeetCode:超过经理收入的员工
题目Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。±—±------±-------±----------+| Id | Name | Salary | ManagerId |±—±------±-------±----------+| 1 | Joe | 70000 | 3 || 2 | Henry | 80000 | 4 || 3 | Sam | 60000 | NU原创 2021-08-23 22:05:33 · 78 阅读 · 0 评论 -
LeetCode:组合两个表
题目表1: Person±------------±--------+| 列名 | 类型 |±------------±--------+| PersonId | int || FirstName | varchar || LastName | varchar |±------------±--------+PersonId 是上表主键表2: Address±------------±--------+| 列名 | 类型原创 2021-08-23 21:51:21 · 76 阅读 · 0 评论 -
LeetCode:第二高的薪水
题目编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。±—±-------+| Id | Salary |±—±-------+| 1 | 100 || 2 | 200 || 3 | 300 |±—±-------+例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。解题思路(1)要想获取第二高,需要排序,使用 order by(默认是升序 asc,原创 2021-08-23 21:47:24 · 104 阅读 · 0 评论 -
LeetCode:阶乘后的零
题目给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。示例 2:输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。解题思路方法1(暴力解法):(1)先计算出n的阶乘,再计算值里面有多少个0方法2(乘因子的个数):(1)一个5就可生成一个0 ,则有多少个5就能生成多少个0。计算当前数值中有多少个乘因子为5即可。(2)需要注意25、125等原创 2021-08-22 14:46:41 · 80 阅读 · 0 评论 -
LeetCode:多数元素
题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3] 输出:3示例 2:输入:[2,2,1,1,1,2,2] 输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。解题思路方法1(统计):(1)先对列表元素进行排序,这样相同元素可排列在一起;(2)通过遍历对比当前元素和前一个元素是否相等,相等时co原创 2021-08-21 17:37:41 · 139 阅读 · 0 评论 -
LeetCode:Excel表列名称&Excel 表列序号
题目给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入:columnNumber = 1 输出:“A”示例 2:输入:columnNumber = 28 输出:“AB”示例 3:输入:columnNumber = 701 输出:“ZY”示例 4:输入:columnNumber = 21474836原创 2021-08-21 16:06:10 · 209 阅读 · 0 评论 -
LeetCode: 两数之和 II - 输入有序数组
题目给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <=answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例 1:输入:numbers = [2,7,11,15], tar原创 2021-08-19 23:13:08 · 108 阅读 · 0 评论 -
Leetcode:二叉树的后序遍历
题目给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]输出: [3,2,1]解题思路(1)后序遍历:左节点-右节点-根节点(2)递归获取代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = le原创 2021-08-19 23:02:19 · 134 阅读 · 0 评论 -
Leetcode:二叉树的前序遍历
题目给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3] 输出:[1,2,3]示例 2:输入:root = [] 输出:[]示例 3:输入:root = [1] 输出:[1]示例 4:输入:root = [1,2] 输出:[1,2]示例 5:输入:root = [1,null,2] 输出:[1,2]解题思路(1)前序遍历为:根节点-左节点-右节点(2)递归获取代码实现# Definition for a bin原创 2021-08-19 22:12:23 · 91 阅读 · 0 评论 -
Leetcode:只出现一次的数字
题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1] 输出: 1示例 2:输入: [4,1,2,1,2] 输出: 4解题思路方法1(数组内比较):(1)对数组进行排序(2)如果第一个元素和第二个元素不相同,则直接返回第一个元素;如果最后两个元素不一样,则直接返回最后一个。(3)从第二个数字开始,比较它和前一位、后一位数字是原创 2021-08-18 21:38:15 · 49 阅读 · 0 评论 -
LeetCode:买卖股票的最佳时机 II
题目给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [7,1,5,3,6,4] 输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格= 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价原创 2021-08-18 20:48:59 · 52 阅读 · 0 评论 -
LeetCode:买卖股票的最佳时机
题目给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4] 输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能原创 2021-08-17 21:38:34 · 91 阅读 · 0 评论 -
LeetCode:杨辉三角1和2
题目题目一:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:输入: numRows = 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows = 1 输出: [[1]]题目二:给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例 1:原创 2021-08-16 21:26:50 · 76 阅读 · 0 评论 -
LeetCode:二进制求和
题目给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”解题思路1、由于两个字符串中的元素都会参与计算,为防止溢出异常,先将短的那个字符串添加‘0’至两个字符串长度相同。2、如果其中有个为空字符串,则直接返回另一个字符串。3、加法都是从最右侧的数字开始,因此字符串也得从最后一个字原创 2021-08-15 14:05:55 · 79 阅读 · 0 评论 -
LeetCode:合并两个有序数组
题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m +n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:nums1 = [1]原创 2021-08-14 22:35:13 · 73 阅读 · 0 评论 -
LeetCode:爬楼梯
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2 输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3 输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶解题思路:方法1(正常思路):(1)对于这种题,可以先把前面几种情况都列出来,找出对于规律。原创 2021-08-14 11:58:23 · 52 阅读 · 0 评论 -
LeetCode:x 的平方根
题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4 输出: 2示例 2:输入: 8 输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解题思路:方法1(暴力解法):(1)通过多次循环找出 x/n==n的值,或者是x/n <n的值,如果是后者,说明当前的元素2次方已经超出x值,需减去1;(2)为了防止乘积原创 2021-08-13 21:51:09 · 93 阅读 · 0 评论 -
Leetcode:加一
题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。示例 3:输入:digits = [0] 输出:[1]解题思路:(1)小原创 2021-08-12 22:02:44 · 45 阅读 · 0 评论 -
LeetCode:最大子序和
题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1] 输出:1示例 3:输入:nums = [0] 输出:0示例 4:输入:nums = [-1] 输出:-1示例 5:输入:nums = [-100000] 输出:-100000解题思路:原创 2021-08-12 21:30:27 · 34 阅读 · 0 评论 -
LeetCode:实现strStr
题目:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从0 开始)。如果不存在,则返回 -1 。解题思路:用字符串的index()方法计算代码实现:class Solution: def strStr(self, haystack: str, needle: str): if needle in haystack: return haystack.inde原创 2021-08-11 22:34:52 · 38 阅读 · 0 评论 -
Leetcode:查找插入位置
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。注意:nums 为无重复元素的升序排列数组示例 1:输入: nums = [1,3,5,6], target = 5 输出: 2示例 2:输入: nums = [1,3,5,6], target = 2 输出: 1示例 3:输入: nums = [1,3,5,6], target = 7 输出: 4示例 4:原创 2021-08-11 22:28:55 · 141 阅读 · 0 评论 -
LeetCode:移除元素
题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。解题思路:(1)遍历列表,比较每个元素是否和指定元素是否相等,相等时进行删除;(2)通过倒序遍历列表。代码实现:class Solution: def removeElement(self, nums, val):原创 2021-08-10 22:47:57 · 44 阅读 · 0 评论 -
LeetCode:删除有序数组中的重复项
题目:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:输入:nums = [1,1,2] 输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。示例 2:输入:nums = [0,0,1,1,1,2,2,3,3,原创 2021-08-09 23:12:15 · 41 阅读 · 0 评论 -
Leetcode:有效地字符串
题目:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。示例 1:输入:s = “()” 输出:true示例 2:输入:s = “()[]{}” 输出:true示例 3:输入:s = “(]” 输出:false示例 4:输入:s = “([)]” 输出:false示例 5:输入:s = “{[]}” 输出:true解题思路:解法1:(1)原创 2021-08-07 23:30:12 · 523 阅读 · 0 评论 -
Leetcode:最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。解题思路:(1)不要想着去一一比较列表内全部的元素从而找出相同前缀,找相同也是找不同,只要比较得出最小和最大的两个元素的最长公共前缀就行。(2)最小和最大两个元素间的差异性最大, 用来做比原创 2021-08-06 23:31:19 · 107 阅读 · 1 评论 -
LeetCode:4的幂
题目描述:给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x示例 1:输入:n = 16 输出:true 示例 2:输入:n = 5 输出:false 示例 3:输入:n = 1 输出:true解题思路:分为两种情况:(1)小于等于0不为4的幂,直接返回 false(2)使用表达式log(x,4),若得到的值为整数,则为4的幂代码实现:class Solut原创 2021-04-05 17:20:20 · 104 阅读 · 0 评论 -
LeetCode:两个数组的交集 II
题目:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。 我们可以不考虑输出结果的顺序。解题思路:1、先对两个列表进行排序,可直接对比头尾元素,若列表1的头比列表2的尾要大时,说明他们两个没有交集。2、比原创 2021-03-28 18:08:59 · 90 阅读 · 0 评论 -
LeetCode:两个数组的交集
题目:给定两个数组,编写一个函数来计算它们的交集。解题思路:遍历一个数组,判断其每个元素是否存在于数组2,另外还需另一个数组存储结果,若数组1的元素存在于数组2中且不存在数组3,则进行存储。代码实现:class Solution: def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]: num3 = [] for i in nums1: if原创 2021-03-20 21:30:47 · 93 阅读 · 0 评论 -
LeetCode:反转字符串中的元音字母
题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。解题思路:元音字母:‘a’,‘e’,‘i’,‘o’,‘u’,‘A’,‘E’,‘I’,‘O’,‘U’要实现头尾元音字母反转,同时从列表头和尾开始遍历,直至i和j相遇。(1)仅当头和尾同时遇到元音字母时,实现反转,且头尾指针都变化1(2)若有一侧为元音字母,另一侧为普通字母,则元音字母的指针不变,普通字母指针变化1代码实现:class Solution: def reverseVowels(self, s: str) ->原创 2021-03-20 21:14:01 · 108 阅读 · 0 评论 -
LeetCode:反转字符串
反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["h","a","n","n","原创 2021-03-07 17:44:47 · 54 阅读 · 0 评论 -
LeetCode——单调数列
题目:如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。方法一:标记执行实现分析:1、flag=None为未执行或相等的情况2、flag=True表示当前数列为递增(1)若出现A[i] > A[i+1] and flag == Tr原创 2021-02-28 18:07:46 · 96 阅读 · 0 评论 -
LeetCode——回文字符串
题目:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false解题思路:1.利用正则方法findall(),正则规则[a-zA-Z0-9]找到源字符串中符合题目条件的子字符串。2.对于空字符串和单字符串,皆满足回文字符串规则。2.字符串长度超过1时,把子字符串生成列表形式。3.分别比较头和尾的字符原创 2020-06-22 21:49:56 · 135 阅读 · 0 评论 -
LeetCode——最佳观光点组合
题目:给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。 示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11解题思路:最佳得分计算公式为A[i] +原创 2020-06-18 22:10:45 · 199 阅读 · 0 评论