自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python sort自定义key函数

今天做力扣T937.重新排列日志文件,看见官解的sort使用key关键字很神奇,故记下来当做笔记。力扣题目key关键字自定义函数,根据自定义函数的返回值进行排序。举列:将ls[5,‘a’,8,‘z’,‘e’,0,7,‘m’]排序,排序规则所有数字在字母前,数字间按大小排序,子母间相对位置不变。注:python sort函数的排序是稳定的#构建排序函数f = lambda x: (0,x) if type(x)==type(0) else (1,)上述函数意为当x的类型是数字型时,返回(0,

2022-05-03 10:37:09 1511 1

原创 算法设计大赛T18

终于最后一道题了,由于这个题真的试了好多次都不能过测试,so 我就先去写后面的了,回来把这题给再补上,ok,下面就是本次初赛的唯二困难题,也是最后一题,相似字符串组T18 如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,“tars” 和 “rats” 是相似的 (交换 0 与 2 的位置); “rats” 和 “arts” 也是相似的,但是 “star” 不与 “tars”,“rats”,或

2021-11-06 21:14:19 125

原创 算法设计大赛T22-T24

T22 问题描述 现在时间是 a 点 b 分,请问 t 分钟后,是几点几分? 输入格式输入的第一行包含一个整数 a。 第二行包含一个整数 b。 第三行包含一个整数 t。 输出格式输出第一行包含一个整数,表示结果是几点。 第二行包含一个整数,表示结果是几分。思路:60min化为1h,24h转化为后一天,当时超过24或分超过60时,分别减24或60,直至符合规范为止a = eval(input())b = eval(input())t = eval(input())a = a + t // 60.

2021-11-06 19:50:44 199

原创 算法设计大赛T19 - T21

T19 如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。1 2 6 7 15 …3 5 8 14 …4 9 13 …10 12 …11 ……容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 40 行第 40 列的数是多少?这道题我记得是那年的蓝桥杯原题吧,其实并不需要把三角矩阵画出来,只需要找到公式利用特定方法求解即可。观察可知,所有偶数行的第一个元素及所有奇数列的第一个元素均为该行(列)对应的阶乘,利用这一特性,求解第40 40 个元素,首先需要240 -1 ,也就.

2021-11-06 11:25:48 186

原创 算法设计大赛T17

今天终于来到了第17题,也是第一道困难题目啦(偷偷吐槽句,题目给的真多…)T239 滑动窗口最大值给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7

2021-11-05 18:14:40 70

原创 算法设计大赛T15 - T16

T15 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。思路:图论中的问题,思路大致.

2021-11-04 19:40:51 218

原创 算法设计大赛T12 - T14

T13 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。思路:这题对python还是蛮简单的,求m*n的矩阵中是否存在元素target,可以将矩阵由二维降至一维的向量,在直接使用 in判断是否target存在,代码如下:class Solution: def searchMatrix(self, matrix: List[List[int]], target: int) .

2021-11-04 19:07:44 308

原创 算法设计大赛T11

我们正在玩一个猜数游戏,游戏规则如下:我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。直到你猜到我选的数字,你才算赢得了这个游戏。给定 n ≥ 1,计算你至少需要拥有多少现金才能确保你能赢得这个游戏。做了好多的简单题,终于进军到中等题了,那么我们先看看第12题,也就是力扣375题,猜数字大小Ⅱ怎么做吧!思路:看到这题可能会有很多同学的第一想法便是猜数字.

2021-11-03 10:59:57 2204

原创 算法设计大赛T8 - T10

T8 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false思路:用两个栈实现队列,对队列的操作即为对栈底进行操作,可先将s1中不进行操作的非栈底元素转移至另一栈s2中,对栈底元素.

2021-11-03 10:28:33 63

原创 算法设计大赛T5 - T7

T5 给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1思路:当nums为空时,直接返回 -1。不为空时遍历nums,sum1为sum[i]前的元素和,sum2为后的元素和,当sum1与sum2相.

2021-11-03 08:52:57 181

原创 算法设计大赛T1 - T4

T1:实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。解题思路:嗯…这题有啥解题思路啊…直接调用python中index方法,可返回字符或字符串在另一字符串中第一次出现的位置,使用if 判断needle是否在haystack中,若不在就返回-1(其实用try也没啥问题)class Solution: def strStr(se.

2021-11-02 14:18:01 354 1

原创 213.打家劫舍Ⅱ

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻

2021-07-28 11:05:58 68

原创 132模式

给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4]输出:false解释:序列中不存在 132 模式的子序列。示例 2:输入:nums = [3,

2021-07-21 22:43:46 168

原创 264.丑数Ⅱ

给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ugly-number-ii在解答这道题目之前我们首先看看什么是丑数。如题目所

2021-07-14 10:23:39 155

原创 73.矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]来源:力扣(LeetCode)链接:https://leetcode-cn.co

2021-03-21 10:27:15 172

原创 150.逆波兰表达式求值

根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,"+",“3”,"*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:tokens = [“4”,“13”,“5”,"/","+"]输出:6解释

2021-03-20 17:38:52 151

原创 列表去重

法一:s = [1,9,6,6,3,1]s = list(set(s))print(s)可以看到输出结果为[1, 3, 9, 6]但由于集合的无序性,这种方法显然改变了原列表的顺序。下面介绍一种不改变顺序的方法法二:s = [1,9,6,6,3,1]t= list(set(s))t.sort(key = s.index)print(t)结果[1, 9, 6, 3]...

2021-03-17 21:03:04 57

原创 使用python建立n维0矩阵

123

2021-03-17 19:32:41 2416

原创 螺旋矩阵2.0

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]思路:首先,建立n阶的多维0矩阵,注意不能使用[[0]*n]*n,因为这种方法形成的行向量均存在同一地址。将坐标设为x,y,当循环次数为圈数,初始p为1,每次将p存入矩阵中后p+1。当遍历圈数为第一行时,每次y+1,最后一列时x+1,最后一

2021-03-16 22:43:37 70

原创 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/spi

2021-03-15 20:22:08 226

原创 724.寻找数组的中心索引

给定一个整数类型的数组 nums,请编写一个能够返回数组 “中心索引” 的方法。我们是这样定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 :输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:索引 3 (nums[3] = 6) 的左侧数之和 (1 + 7 + 3 = 11),与右侧数之和 (5 + 6 = 11) 相等。同

2021-01-28 10:03:36 53

原创 1128.等价多米诺骨牌对的数量

给你一个由一些多米诺骨牌组成的列表 dominoes。如果其中某一张多米诺骨牌可以通过旋转 0 度或 180 度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,dominoes[i] = [a, b] 和 dominoes[j] = [c, d] 等价的前提是 ac 且 bd,或是 ad 且 bc。在 0 <= i < j < dominoes.length 的前提下,找出满足 dominoes[i] 和 dominoes[j] 等价的骨牌对 (i, j) 的数量。示例:

2021-01-26 16:28:50 73

原创 674.最长连续递增序列

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。示例 :输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,5], 长度为3。尽管

2021-01-24 20:03:23 69

原创 989.数组形式的整数加法

对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-to-array-form-of-integer提供两种思

2021-01-22 12:18:48 305

原创 628.三个数的最大乘积

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers分为该数组包含负数及不包含负数两种情况先将原数组排序,返回的最大值仅有可能是最大的三个数乘积或最小的两个负数乘积再乘上最大的数,所以代码很简单:class Solu

2021-01-20 10:17:25 53

原创 509.斐波那契数列

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fibonacci-number刚入门递归写的基本都是斐波那契数列吧…属于较为基本的内容了,这里多提供几种方法供参

2021-01-04 11:28:10 131

原创 435.无重叠区域

给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1:输入: [ [1,2], [2,3], [3,4], [1,3] ]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/non-overlapping-intervals法1:思路 将二维列表

2020-12-31 11:07:29 88

原创 205.同构字符串

给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。示例 1:输入:s = “egg”, t = “add”输出:true示例 2:输入:s = “foo”, t = “bar”输出:false来源:力扣(LeetCode)链接:https://leetcode-cn

2020-12-30 11:20:29 51

原创 1046.最后一块石头的重量

有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。示例:输入:[2,7,4,1,8,1]输出:1解释:先选出 7 和 8,得到 1,所以数组转换为

2020-12-30 10:39:48 56

原创 百度API语音识别

今天开补迟到的工作室大作业…主要介绍百度API调用的方法,以语音识别为例目录1)前往AI开放平台创建应用2)代码及注意事项3)python调用API1.识别本地文件2.录音识别4)报错信息1)前往AI开放平台创建应用首先,先进入百度API开发的网址https://ai.baidu.com/进入后点击右上角控制台,注册自己的账号注册完毕后在产品服务—人工智能中找到自己需要的API,我们以语音识别为例,点击语音技术之后点击创建应用,进行必要的信息填写创建完毕后百度会给你一个应用列表,使用这

2020-12-29 11:36:40 9570 4

原创 分发饼干python

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。题目看起来蛮晕的,看一下示例就能明白啦示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和

2020-12-25 11:27:09 528

原创 字符串中的第一个唯一字符

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。示例:s = “leetcode”返回 0s = “loveleetcode”返回 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string用了两种方法求解这个问题法一基本思路。。。想了半天不知道怎么说明,那就看代码吧,理论上最多26次循环就能结束class Solution:

2020-12-23 12:28:43 182 2

原创 用最少数量的剑引爆气球

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆,所需的弓箭

2020-11-24 21:01:48 233

原创 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-anagramclass Solution: def isAnagram(self, s: str, t: str) -&gt

2020-11-22 18:06:25 54

原创 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。输入: [0,1,0,3,12]输出: [1,3,12,0,0]遍历数组,每次遍历后pop出0,之后再在原数组上追加pop出的0即可class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place inst

2020-11-19 21:55:55 79

原创 距离顺序排列矩阵单元格

给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)输入:R = 1, C = 2, r0 = 0

2020-11-18 10:58:56 138

原创 移掉k位数字

给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意:num 的长度小于 10002 且 ≥ k。num 不会包含任何前导零。输入: num = “1432219”, k = 3输出: “1219”解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。输入: num = “10”, k = 2输出: “0”解释: 从原数字移除所有的数字,剩余为空就是0。输入: num = “10200”, k = 1输出: “200”解

2020-11-16 22:08:10 365 1

原创 按奇偶排序数组

给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii法一:clas

2020-11-13 21:19:56 238

原创 每日一练

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-permutation基本思路是将列表从后往前部分遍历,

2020-11-11 08:51:00 102

原创 每日一练

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。输入: -123输出: -321输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-integerclass Solution: def reverse(self,

2020-11-10 15:37:33 115

空空如也

空空如也

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

TA关注的人

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