- 博客(15)
- 收藏
- 关注
原创 LeetCode 提莫攻击 Python3
这题目,爷青回了属于是只需要考虑在艾希中毒时提莫又攻击了一下的情况,因为中毒状态是不叠加的,所以中毒的秒数得减掉。classSolution:deffindPoisonedDuration(self,timeSeries:List[int],duration:int)->int:ans,expired=0,0foriinrange(len(timeSeries)):iftimeSer...
2021-11-10 20:45:21 425
转载 LeetCode 祖玛游戏 Python3
呃,放弃了,太难了,我感觉我用遍历搜索写出来的算法一定会超时,直接上官方代码吧class Solution: def findMinStep(self, board: str, hand: str) -> int: def clean(s): # 消除桌面上需要消除的球 n = 1 while n: s, n = re.subn(r"(.)\1{2,}", "", s)...
2021-11-09 17:54:51 261
原创 Leetcode 猜数字游戏 Python
算法基础真的是我的硬伤啊大神的题解都是那么难看懂每次点开正确答案只有三四句而自己敲了二三十行代码都感觉自己的脑子是不是99新的class Solution: def getHint(self, secret: str, guess: str) -> str: Bulls = 0 Cows = 0 s = secret g = guess len_v = len(s) for i
2021-11-08 11:02:11 2736
原创 Leetcode 范围求和II Python3
解这道题需要提前分析一波最终返回的值要么就是列表里面的第一个元素、第二个元素的最小值的乘积,要么就是m和n的乘积。上代码:注意还要考虑ops列表为空的情况classSolution:defmaxCount(self,m:int,n:int,ops:List[List[int]])->int:a=[ops[i][0]foriinrange(0,len(ops))]b=[ops[i][1]forii...
2021-11-07 14:04:32 158
原创 Leetcode 丢失的数字 Python
遍历找数字就完事啦classSolution:defmissingNumber(self,nums:List[int])->int:nums.sort()fori,numinenumerate(nums):ifnum!=i:returnireturnlen(nums)...
2021-11-06 22:55:47 141
原创 Leetcode 最长定差子序列
看到题目,马上想到的是贪心算法。但是!!可恶啊!为什么超时了没事,可以优化一下!但是还是失败了。。人都麻了哟上代码吧,官方题解:classSolution:deflongestSubsequence(self,arr:List[int],difference:int)->int:dp=defaultdict(int)forvinarr:dp[v]=dp[v-di...
2021-11-05 22:40:36 76
原创 Leetcode 完全平方数 Python
经典的题目只要遍历到最接近这个数的根号次方的整数就行,不过Python有更强大的功能classSolution:defisPerfectSquare(self,num:int)->bool:returnfloat.is_integer(pow(num,0.5))...
2021-11-04 21:23:56 324
原创 Leetcode 接雨水 Python
这个实在有点难,上代码吧基本都是遍历再判别的算法,但是要理清"什么情况下才满足能储水"确实费神classSolution:deftrapRainWater(self,heightMap:List[List[int]])->int:iflen(heightMap)<=2orlen(heightMap[0])<=2:return0m,n=len(heightMap),...
2021-11-03 22:50:45 84
原创 Leetcode 删除单链表中某个特定节点 Python
在没有约束的情况下,这种情况一般会访问这个节点的上一个节点并删除它(上一个节点)的指针然后让它的指针指向要删除的节点的下一个节点相对于定义一个新的指针跳过这个被删除的节点但是题目限制我们无法访问头节点,那就不能访问“上一个节点”了所以只能让这个要删除的节点的值变成它的下一个节点的值然后让要删除的节点的指针指向下一个节点的指针代码:class Solution: def deleteNode(self, node): node.val = node.nex
2021-11-02 11:25:39 140
原创 Leecode 分糖果 Python
题目:给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。分析:妹妹分到的最大糖果的种类数,要不就是所有糖果的种类数,要不就是糖果数量除以二所以,ifelse语句直接搞定:class Solution: def distributeCandies(self, candyType): kinds = len(Counter(candyType))
2021-11-01 11:04:54 121
原创 Leecode键盘行 python
有一说一,还是别人写的代码比较妙:class Solution: def findWords(self, words): ans = [] rowIdx = "12210111011122000010020202" for word in words: idx = rowIdx[ord(word[0].lower()) - ord('a')] print(idx) if all.
2021-10-31 22:18:54 124
原创 Leecode 只出现一次的数字 III Python
我用的是黑名单的机制如果遍历到的这个变量在它之后也出现过,那这个变量就会被加入黑名单如果遍历到的这个变量在以后并没有出现过,且没有在黑名单里面,那么就把它加入到输出列表里最后输出列表虽然时间空间复杂度都被爆虐,但这次至少不会拿起题来不会写,转眼就要看答案那种。class Solution: def singleNumber(self, nums): lis = [] black_label = [] for i in range(
2021-10-30 20:35:27 93
原创 路径交叉问题Python
人生苦短我用Python虽然还是写了出来,但是还是查了答案的,看了别人的思路的最终答案:class Solution: def isSelfCrossing(self, list_1): n = len(list_1) if n <= 3: return False for i in range(3, n): if list_1[i] >= list_1[i-2] and lis
2021-10-29 16:44:45 169
原创 重新排序得到2的幂
搜索回溯 + 位运算将 n 的十进制表示视作一个字符数组,我们可以枚举该数组的所有排列,对每个不含前导零的排列判断其对应的整数是否为 2 的幂。这可以拆分成两个子问题:1、枚举可能包含重复字符的数组的全排列2、判断一个整数是否为2的幂def isPowerOfTwo(n: int) -> bool: return (n & (n - 1)) == 0class Solution: def reorderedPowerOf2(self, n: int)...
2021-10-28 22:41:11 96
转载 LeeCode删除无效符号
思路与算法题目让我们删除括号使得剩下的括号匹配,要求我们删除最少的括号数,并且要求得到所有的结果。我们可以使用回溯算法,尝试遍历所有可能的去掉非法括号的方案。首先我们利用括号匹配的规则求出该字符串 s 中最少需要去掉的左括号的数目 lremove 和右括号的数目rremove,然后我们尝试在原字符串 s 中去掉 lremove 个左括号和 rremove 个右括号,然后检测剩余的字符串是否合法匹配,如果合法匹配则我们则认为该字符串为可能的结果,我们利用回溯算法来尝试搜索所有可能的去除括号的方案。
2021-10-27 17:23:21 221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人