自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 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 231

原创 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 249

原创 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 192

原创 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 161

原创 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 226

原创 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 158

原创 LeetCode:组合两个表

题目 表1: Person ±------------±--------+ | 列名 | 类型 | ±------------±--------+ | PersonId | int | | FirstName | varchar | | LastName | varchar | ±------------±--------+ PersonId 是上表主键 表2: Address ±------------±--------+ | 列名 | 类型

2021-08-23 21:51:21 160

原创 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 214

原创 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 193

原创 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 312

原创 LeetCode:Excel表列名称&Excel 表列序号

题目 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如: A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 … 示例 1: 输入:columnNumber = 1 输出:“A” 示例 2: 输入:columnNumber = 28 输出:“AB” 示例 3: 输入:columnNumber = 701 输出:“ZY” 示例 4: 输入:columnNumber = 21474836

2021-08-21 16:06:10 395

原创 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 228

原创 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 247

原创 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 210

原创 Leetcode:只出现一次的数字

题目 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 解题思路 方法1(数组内比较): (1)对数组进行排序 (2)如果第一个元素和第二个元素不相同,则直接返回第一个元素;如果最后两个元素不一样,则直接返回最后一个。 (3)从第二个数字开始,比较它和前一位、后一位数字是

2021-08-18 21:38:15 126

原创 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 131

原创 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 178

原创 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 159

原创 LeetCode:二叉树的中序遍历

题目 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 示例 1: 输入:root = [1,null,2,3] ,输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 解题思路: 直接递归遍历访问左结点、根节点、右节点 代码实现: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None

2021-08-15 20:44:08 205

原创 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 170

原创 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 158

原创 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 115

原创 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 208

原创 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 129

原创 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 100

原创 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 107

原创 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 272

原创 LeetCode:移除元素

题目: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 解题思路: (1)遍历列表,比较每个元素是否和指定元素是否相等,相等时进行删除; (2)通过倒序遍历列表。 代码实现: class Solution: def removeElement(self, nums, val):

2021-08-10 22:47:57 101

原创 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 112

原创 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 762

原创 Leetcode:最长公共前缀

题目: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs = [“flower”,“flow”,“flight”] 输出:“fl” 示例 2: 输入:strs = [“dog”,“racecar”,“car”] 输出:"" 解释:输入不存在公共前缀。 解题思路: (1)不要想着去一一比较列表内全部的元素从而找出相同前缀,找相同也是找不同,只要比较得出最小和最大的两个元素的最长公共前缀就行。 (2)最小和最大两个元素间的差异性最大, 用来做比

2021-08-06 23:31:19 224 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 228

原创 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 176

原创 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 175

原创 LeetCode:反转字符串中的元音字母

题目:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。 解题思路: 元音字母:‘a’,‘e’,‘i’,‘o’,‘u’,‘A’,‘E’,‘I’,‘O’,‘U’ 要实现头尾元音字母反转,同时从列表头和尾开始遍历,直至i和j相遇。 (1)仅当头和尾同时遇到元音字母时,实现反转,且头尾指针都变化1 (2)若有一侧为元音字母,另一侧为普通字母,则元音字母的指针不变,普通字母指针变化1 代码实现: class Solution: def reverseVowels(self, s: str) -&gt

2021-03-20 21:14:01 197

原创 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 163

原创 os.walk()解析

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下 os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) 1、top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。 (1)root 所指的是当前正在遍历的这个文件夹的本身的地址 (2)dirs 是一个 list ,指该文件夹中所有的目录的名字,不包括子目录。 (3)files 同样是 list , 指该文件夹中

2021-03-06 21:30:48 639 1

原创 python——列表相关(倒序遍历list+删除列表中指定值)

1、倒序遍历list for i in reversed(A): print(i) A[::-1] 2、删除列表中指定值 # 异常处理方式 A = [1,4,2,'',5,'',6] try: for i in range(len(A)): if A[i] == '': A.pop(i) except IndexError: # 删除对象后,列表长度会减小,但索引值一开始就固定区间为[0,len(A)],所以会导致抛出越界异常 pass # 异

2021-02-28 18:42:30 1554 1

原创 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 193

原创 openpyxl浅归纳

命令集锦 fb = openpyxl.load_workbook('反馈表.xlsx') # 打开已有的表 fb.sheetnames # 以列表的形式输出所有列名 fb.worksheets # 以列表形式输出全部worksheet对象 fs = fb['sheet_name'] # 获取指定表名的表对象,即worksheet对象 fb.index(fs) # 获取指定sheet的索引值,需传入一个worksheet对象 fb.active # 获取当前活跃工作表 fb.active = fb['shee

2020-11-15 21:52:27 1328

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除