自定义博客皮肤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 126

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

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

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

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

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

原创 LeetCode:组合两个表

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

2021-08-23 21:51:21 76

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

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

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

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

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

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

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

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

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

2021-08-18 21:38:15 49

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

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

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

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

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

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

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

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

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

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

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

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

原创 LeetCode:移除元素

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

2021-08-10 22:47:57 44

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

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

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

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

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

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

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

原创 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 439 1

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

1、倒序遍历listfor 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 1385 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 96

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

空空如也

空空如也

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

TA关注的人

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