- 博客(18)
- 收藏
- 关注
原创 leetcode 21天打卡 19 键值映射
要求:实现一个 MapSum 类,支持两个方法,insert和sum:MapSum() 初始化 MapSum 对象void insert(String key, int val) 插入 key-val 键值对,字符串表示键 key ,整数表示值 val 。如果键 key 已经存在,那么原来的键值对将被替代成新的键值对。int sum(string prefix) 返回所有以该前缀 prefix 开头的键 key 的值的总和。思路:class MapSum(object): ..
2021-11-14 12:24:13
296
原创 leetcode 21天打卡 18 检测大写字母
要求:我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如 "USA" 。单词中所有字母都不是大写,比如 "leetcode" 。如果单词不只含有一个字母,只有首字母大写,比如"Google" 。给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。思路:我们利用ASCII码来判断是否位大写字母,首先判断word中每个元素的是否都是大...
2021-11-13 12:06:01
284
原创 leetcode 21天打卡 17 猜数字大小
要求:我们正在玩一个猜数游戏,游戏规则如下:我从1到 n 之间选择一个数字。你来猜我选了哪个数字。如果你猜到正确的数字,就会 赢得游戏 。如果你猜错了,那么我会告诉你,我选的数字比你的 更大或者更小 ,并且你需要继续猜数。每当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。如果你花光了钱,就会 输掉游戏 。给你一个特定的数字 n ,返回能够 确保你获胜 的最小现金数,不管我选择那个数字 。代码:class Solution(object): def g..
2021-11-12 11:30:49
2238
原创 leetcode 21 天打卡 16 K个逆序对数组
要求:给出两个整数n和k,找出所有包含从1到n的数字,且恰好拥有k个逆序对的不同的数组的个数。逆序对的定义如下:对于数组的第i个和第j个元素,如果满i<j且a[i]>a[j],则其为一个逆序对;否则不是。由于答案可能很大,只需要返回 答案 mod 109+ 7 的值。思路:我们可以用动态规划的方法来解决本题。作者:LeetCode-Solution链接:https://lee...
2021-11-11 10:24:17
419
原创 leetcode 21 天打卡 15 提莫攻击
要求:在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续duration 秒。正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duratio...
2021-11-10 14:43:05
237
原创 leetcode 21天打卡 13 猜数字游戏
要求:你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls", 公牛),有多少位属于数字猜对了但是位置不对(称为 "Cows", 奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字secret 和朋友猜测的数字guess ,请你返回对朋友这次猜测的提示。提示的..
2021-11-08 15:01:35
174
原创 leetcode 21天打卡 12 范围求和
要求:给定一个初始元素全部为0,大小为 m*n 的矩阵M以及在M上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数a 和 b 的数组表示,含义是将所有符合0 <= i < a 以及 0 <= j < b 的元素M[i][j]的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。思路: 每一次操作都是对矩阵M从[0,0]到[a,b]上加...
2021-11-07 13:39:04
105
原创 leetcode 21天打卡 11 消失的数字
要求:给定一个包含[0, n]中n个数的数组nums,找出[0, n]这个范围内没有出现在数组中的那个数。思路: ①:用一个循环语句判断i是否在nums里,0<= i <=len(nums),不在则输出i。class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype...
2021-11-06 11:19:13
66
原创 leetcode 21天打卡 10 最长定差子序列
要求:给你一个整数数组arr和一个整数difference,请你找出并返回 arr中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。思路: 从左往右遍历数组arr,保存以当前元素为结尾的等差子序列,输出所有等差子序列中长度的最大值。res = {}for i in arr: res[i] =...
2021-11-05 17:34:17
85
原创 leetcode 21天打卡 9 有效的完全平方数
要求:给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如sqrt 。思路: while循环i从0开始,若i**2<num,则i+1,直到i**2=num,则输出True,若i**2>num,则输出False。num = 16i = 0while (i ** 2 < num): i += 1if i **...
2021-11-04 14:30:07
72
原创 leetcode 21天打卡 8 接雨水II
要求:给你一个m x n的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。思路: 首先确定最外层方块的高度,再判断里面方块和相邻方块高度的差,可以确定最小高度方块的相邻方块的接水高度。我们同时更新最外层的方块标记,我们在新的最外层的方块再次找到接水后的高度的最小值,同时确定与其相邻的方块的接水高度。...
2021-11-03 17:58:25
83
原创 leetcode 21天打卡 7 删除链表中的节点
要求:请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。思路:先将node的节点值改为node下一个节点的值,然后再删除node下一个节点。node.val = node.next.valnode.next = node.next.next...
2021-11-02 12:17:55
57
原创 leetcode 21天打卡 6 分糖果
要求:给定一个偶数长度的数组candyType,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。思路: 将candyType中所有糖果数记为L1,去掉candyType中相同种类的糖果,将不同种类的糖果数记为L2,若L2<=L1/2,则妹妹可以获得的最大糖果的种类数为L2;若L2>L1/2,则妹妹可获得的最大糖果数为L1/2。l1 = len(candyT...
2021-11-01 13:34:58
68
原创 leetcode 21天打卡 5 键盘行
要求:给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。美式键盘 中:第一行由字符 "qwertyuiop" 组成。第二行由字符 "asdfghjkl" 组成。第三行由字符 "zxcvbnm" 组成。思路:先写出三行字母大小写分别为str1,str2,str3,再将输入的words中每个元素取出来组成一个列表n,查看n是否为str1,str2,str3的子集,若是则输出。str1=["q","w","e...
2021-10-31 16:52:13
132
原创 leetcode 21天打卡 4 只出现一次的数字
要求:给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按任意顺序返回答案。思路: 要求得到只出现一次的数字,用count()统计只出现一次的数字就行了。res=[]for i in num: x=num.count(i) if x == 1: res.append(i)...
2021-10-30 14:32:03
87
原创 leetcode 21天打卡 3 路径交叉
要求:给你一个整数数组 distance 。从 X-Y 平面上的点(0,0)开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。思路:根据归纳结果,我们发现所有可能的路径交叉的情况只有以下三类:第 11 类,如上图所示...
2021-10-29 22:37:37
202
原创 leetcode 21天打卡 2 重新排序得到2的幂
要求:给定正整数 N,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到2 的幂,返回 true;否则,返回 false。思路: 首先将正整数N转换为一个列表s1,列表长度记为l1,然后将s1中每个元素按大小排列得到新的s1。再将所有2的幂的数放进a,在a中筛选出所有长度为l1的元素,并转换为列表s2,然后将所有s2中每个元素按大小排列。再比较s1与s2是否相等,相等输出True,否则输出False。...
2021-10-28 15:02:20
158
原创 leetcode 21天打卡 1 删除无效的括号
题目描述:给你一个由若干括号和字母组成的字符串s,删除最小数量的无效括号,使得输入的字符串有效。返回所有可能的结果。答案可以按任意顺序返回。思路:当遇到字符串s的左括号时,L+1;当遇到字符串s的右括号时,若此时L不为0,则L-1;若L为0,则R+1。...
2021-10-27 16:47:11
3377
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人