- 博客(22)
- 收藏
- 关注
原创 最大单词长度乘积
class Solution: def maxProduct(self, words: List[str]) -> int: masks = [reduce(lambda a, b: a | (1 << (ord(b) - ord('a'))), word, 0) for word in words] return max((len(x[1]) * len(y[1]) for x, y in product(zip(masks, words), r.
2021-11-17 13:27:54 308
原创 完美矩阵python
精确覆盖意味着:矩形区域中不能有空缺,即矩形区域的面积等于所有矩形的面积之和;矩形区域中不能有相交区域。我们需要一个统计量来判定是否存在相交区域。由于精确覆盖意味着矩形的边和顶点会重合在一起,我们不妨统计每个矩形顶点的出现次数。同一个位置至多只能存在四个顶点,在满足该条件的前提下,如果矩形区域中有相交区域,这要么导致矩形区域四角的顶点出现不止一次,要么导致非四角的顶点存在出现一次或三次的顶点;因此要满足精确覆盖,除了要满足矩形区域的面积等于所有矩形的面积之和,还要满足矩形区域四角的顶点只能出现一
2021-11-16 12:28:14 344
原创 灯泡开关python
class Solution: def bulbSwitch(self, n: int) -> int: return int(sqrt(n + 0.5))
2021-11-15 09:47:52 877
原创 键值映射python
class MapSum: def __init__(self): self.map = {} def insert(self, key: str, val: int) -> None: self.map[key] = val def sum(self, prefix: str) -> int: res = 0 for key,val in self.map.items(): i.
2021-11-14 11:19:53 985
原创 检测大写字母
class Solution: def detectCapitalUse(self, word: str) -> bool: # 若第 1 个字母为小写,则需额外判断第 2 个字母是否为小写 if len(word) >= 2 and word[0].islower() and word[1].isupper(): return False # 无论第 1 个字母是否大写,其他字母必须与第 2 个.
2021-11-13 16:25:07 368
原创 猜数字大小
class Solution: def getMoneyAmount(self, n: int) -> int: f = [[0] * (n + 1) for _ in range(n + 1)] for i in range(n - 1, 0, -1): for j in range(i + 1, n + 1): f[i][j] = min(k + max(f[i][k - 1], f[k + 1][j.
2021-11-12 14:01:12 69
原创 K个逆序对数组
class Solution: def kInversePairs(self, n: int, k: int) -> int: mod = 10**9 + 7 f = [1] + [0] * k for i in range(1, n + 1): g = [0] * (k + 1) for j in range(k + 1): g[j] = (...
2021-11-11 11:19:00 236
原创 提莫攻击python
class Solution: def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int: ans, expired = 0, 0 for i in range(len(timeSeries)): if timeSeries[i] >= expired: ans += duration .
2021-11-10 14:35:09 850
原创 祖玛游戏python
ptn = re.compile(r'(\w)\1{2,}')class Solution: @cache def findMinStep(self, board: str, hand: str) -> int: if not board: return 0 res = inf for i, j in product(range(len(hand)), range(len(board) + 1)): new_b.
2021-11-09 12:06:42 3440
原创 猜数字游戏
你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 "Bulls", 公牛),有多少位属于数字猜对了但是位置不对(称为 "Cows", 奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字secret 和朋友猜测的数字guess ,请你返回对朋友这次猜测的提示。提示的格式为 "..
2021-11-08 11:03:42 102
原创 范围求和python
给定一个初始元素全部为0,大小为 m*n 的矩阵M以及在M上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数a 和 b 的数组表示,含义是将所有符合0 <= i < a 以及 0 <= j < b 的元素M[i][j]的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数class Solution: def maxCount(self, m: int, n: int, ops: List[Li...
2021-11-07 13:03:43 442
原创 丢失的数字
class Solution: def missingNumber(self, nums: List[int]) -> int: nums.sort() for i, num in enumerate(nums): if num != i: return i return len(nums)
2021-11-06 14:09:33 87
原创 最长定差子序列
class Solution: def longestSubsequence(self, arr: List[int], difference: int) -> int: dp = defaultdict(int) for v in arr: dp[v] = dp[v - difference] + 1 return max(dp.values())
2021-11-05 13:17:30 119
原创 有效的完全平方数python
class Solution: def isPerfectSquare(self, num: int) -> bool: return float.is_integer(pow(num, 0.5))
2021-11-04 17:03:29 117
原创 接雨水python
class Solution: def trapRainWater(self, heightMap: List[List[int]]) -> int: if len(heightMap) <= 2 or len(heightMap[0]) <= 2: return 0 m, n = len(heightMap), len(heightMap[0]) visited = [[0 for _ in range(.
2021-11-03 11:59:33 191
原创 删除链表中的节点python
class Solution: def deleteNode(self, node): node.val = node.next.val node.next = node.next.next
2021-11-02 11:26:58 275
原创 分糖果python
class Solution: def distributeCandies(self, candyType: List[int]) -> int: return min(len(set(candyType)), len(candyType) // 2)
2021-11-01 09:50:31 882
原创 键盘行python代码
class Solution: def findWords(self, words: List[str]) -> List[str]: ans = [] rowIdx = "12210111011122000010020202" for word in words: idx = rowIdx[ord(word[0].lower()) - ord('a')] if all(rowIdx[ord(ch.
2021-10-31 22:30:09 164
原创 只出现一次的数字
给定一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按任意顺序返回答案。class Solution: def singleNumber(self, nums: List[int]) -> List[int]: freq = Counter(nums) return [num for num, occ in freq.items() if occ == 1]...
2021-10-30 07:30:05 116
原创 路径交叉python代码
class Solution: def isSelfCrossing(self, distance: List[int]) -> bool: n = len(distance) for i in range(3, n): # 第 1 类路径交叉的情况 if (distance[i] >= distance[i - 2] and distance[i - 1] <.
2021-10-29 19:25:10 203
原创 2021-10-28
给定正整数 N,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。如果我们可以通过上述方式得到2 的幂,返回 true;否则,返回 false。def isPowerOfTwo(n: int) -> bool: return (n & (n - 1)) == 0class Solution: def reorderedPowerOf2(self, n: int) -> bool: nums = sorted(list(..
2021-10-28 18:05:05 78
原创 删除无效括号
背景知识有效的「括号」:题目输入的字符串由一系列「左括号」和「右括号」组成,但是有一些额外的括号,使得括号不能正确配对。对于括号配对规则如果还不太清楚的读者,可以先完成问题「20. 有效的括号」。可以一次遍历计算出多余的「左括号」和「右括号」:根据括号匹配规则和根据求解「22. 括号生成」的经验,我们知道:如果当前遍历到的「左括号」的数目严格小于「右括号」的数目则表达式无效。因此,我们可以遍历一次输入字符串,统计「左括号」和「右括号」出现的次数。当遍历到「左括号」的时候:「左括号」数量加 11
2021-10-27 12:29:27 251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人