python3
文章平均质量分 61
lizju
求关注
展开
-
[LeetCode] 419. 甲板上的战舰
题目给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ ,返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者垂直放置在 board 上。换句话说,战舰只能按 1 x k(1 行,k 列)或 k x 1(k 行,1 列)的形状建造,其中 k 可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 (即没有相邻的战舰)。思路就是数有几个船, 就是数就完了。代码class Solution: def原创 2021-12-18 13:34:00 · 3575 阅读 · 0 评论 -
[LeetCode] 1627. 带阈值的图连通性
题目有 nnn 座城市,编号从 111 到 nnn 。编号为xxx 和yyy 的两座城市直接连通的前提是: xxx 和 yyy 的公因数中,至少有一个 严格大于 某个阈值 thresholdthresholdthreshold 。更正式地说,如果存在整数 z ,且满足以下所有条件,则编号$ x$ 和 yyy 的城市之间有一条道路:x%z==0x \% z == 0x%z==0y%z==0y \% z == 0y%z==0z>thresholdz > thresholdz>thre原创 2021-12-17 13:44:18 · 168 阅读 · 0 评论 -
[LeetCode] 1643. 第 K 条最小指令
题目Bob 站在单元格 (0, 0) ,想要前往目的地 destination :(row, column) 。他只能向 右 或向 下 走。你可以为 Bob 提供导航 指令 来帮助他到达目的地 destination 。指令 用字符串表示,其中每个字符:‘H’ ,意味着水平向右移动‘V’ ,意味着竖直向下移动能够为 Bob 导航到目的地 destination 的指令可以有多种,例如,如果目的地 destination 是 (2, 3),“HHHVV” 和 “HVHVH” 都是有效 指令 。然而原创 2021-12-17 10:38:30 · 3438 阅读 · 0 评论 -
[Leetcode] 1610. 可见点的最大数目
给你一个点数组 points 和一个表示角度的整数 angleangleangle ,你的位置是 locationlocationlocation ,其中 location=[posx,posy]location = [posx, posy]location=[posx,posy] 且 points[i]=[xi,yi]points[i] = [xi, yi]points[i]=[xi,yi] 都表示 X−YX-YX−Y 平面上的整数坐标。最开始,你面向东方进行观测。你 不能 进行移动改变位置,但可以通过原创 2021-12-16 13:25:23 · 3903 阅读 · 0 评论 -
[Leetcode/Python3] 第214场周赛 (Rank 97 / 9769)
P1. 获取生成数组中的最大值给你一个整数 njie jjj 。按下述规则生成一个长度为 n + 1 的数组 nums :nums[0] = 0nums[1] = 1当 2 <= 2 * i <= n 时,nums[2 * i] = nums[i]当 2 <= 2 * i + 1 <= n 时,nums[2 * i + 1] = nums[i] + nums[i + 1]返回生成数组 nums 中的 最大 值。class Solution: def getMax原创 2020-11-10 11:22:34 · 204 阅读 · 1 评论 -
117. 填充每个节点的下一个右侧节点指针 II
题目给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。使用额外空间的扁平映射法class Solution: def connect(self, root: 'Node') -> 'Node':原创 2020-09-28 18:25:26 · 94 阅读 · 0 评论 -
[Leetcode/Python3] 第208场周赛
P1 文件夹操作日志搜集器每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。下面给出对变更操作的说明:“…/” :移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。“./” :继续停留在当前文件夹。“x/” :移动到名为 x 的子文件夹中。题目数据 保证总是存在文件夹 x 。给你一个字符串列表 logs ,其中 logs[i] 是用户在 ith 步执行的操作。文件系统启动时位于主文件夹,然后执行 logs 中的操作。执行完所有变更文件夹原创 2020-09-27 16:49:56 · 142 阅读 · 0 评论 -
113. 路径总和 II
题目给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \7 2 5 1返回:[ [5,4,11,2], [5,8,4,5]]力扣(LeetCode代码# Definition for a binary tree n原创 2020-09-26 11:26:17 · 134 阅读 · 0 评论 -
106. 从中序与后序遍历序列构造二叉树
题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7力扣(LeetCode)代码# Definition for a binary tree node.# class TreeNode:# def __init__(sel原创 2020-09-25 12:42:26 · 122 阅读 · 0 评论 -
501. 二叉搜索树中的众数
描述给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)力扣(LeetC原创 2020-09-24 14:42:32 · 91 阅读 · 0 评论 -
LCP Fall Team 2020
LCP 22. 黑白方格画小扣注意到秋日市集上有一个创作黑白方格画的摊位。摊主给每个顾客提供一个固定在墙上的白色画板,画板不能转动。画板上有 n * n 的网格。绘画规则为,小扣可以选择任意多行以及任意多列的格子涂成黑色,所选行数、列数均可为 0。小扣希望最终的成品上需要有 k 个黑色格子,请返回小扣共有多少种涂色方案。注意:两个方案中任意一个相同位置的格子颜色不同,就视为不同的方案。解剩余的面积为n2−kn^2-kn2−k, 把行和列都往上和左移动, 得到矩形如下:------------原创 2020-09-23 15:24:22 · 437 阅读 · 0 评论 -
617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入:Tree 1 Tree 2 1 2原创 2020-09-23 15:23:26 · 134 阅读 · 0 评论 -
538. 把二叉搜索树转换为累加树
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。解记录所有点的值排序更新# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right原创 2020-09-21 08:22:05 · 61 阅读 · 0 评论 -
39. 组合总和
描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。解class Solution: def combinationSum(self, A: List[int], target: int) -> List[List[int]]: def f(原创 2020-09-20 20:49:24 · 74 阅读 · 0 评论 -
78. 子集
描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。解class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: def f(i, A): if i == len(nums): yield A return for x i原创 2020-09-20 20:36:56 · 74 阅读 · 0 评论 -
[Leetcode/python3] 第207场周赛
P1 重新排列单词间的空格给你一个字符串 text ,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余的空格放置在字符串末尾 ,这也意味着返回的字符串应当与原 text 字符串的长度相等。返回 重新排列空格后的字符串 。Solutionclass Solution:原创 2020-09-20 20:28:15 · 204 阅读 · 0 评论 -
云栖大会限时抢答赛
P1: 和至少为 K 的最短子数组Leetcode 862原题一点没改。P2: 滑动拼图Leetcode 7732×32\times32×3改成了3×33\times33×3。原本可以直接DFS或者A-start搜索,但是,现在会T,终止状态也不好用了。用优先队列去维护, 计算和最终状态的差值,相同step的情况下, 优先选择差距小的。可以在优化一些, 排除一些。import heapqimport collectionsclass Solution: """ @par原创 2020-09-19 13:49:54 · 1126 阅读 · 0 评论 -
[Leetcode/c++] 第206场周赛
P1 二进制矩阵中的特殊位置给你一个大小为 rows x cols 的矩阵 mat,其中 mat[i][j] 是 0 或 1,请返回 矩阵 mat 中特殊位置的数目 。特殊位置 定义:如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0(行和列的下标均 从 0 开始 ),则位置 (i, j) 被称为特殊位置。暴力#include <bits/stdc++.h>#include <unordered_map>#include <uno原创 2020-09-14 12:28:03 · 292 阅读 · 0 评论 -
[LeetCode/Python] LCCUP 20 参赛题解
P1 速算机器人小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 x 和 y),请小扣说出计算指令:“A” 运算:使 x = 2 * x + y;“B” 运算:使 y = 2 * y + x。在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。模拟(AC)class Solution: def calculate(self, s: s原创 2020-09-14 10:09:51 · 550 阅读 · 0 评论 -
[Python3] 力扣第205场周赛 题解
P1. 替换所有的问号 显示英文描述给你一个仅包含小写英文字母和 ‘?’ 字符的字符串 s ,请你将所有的 ‘?’ 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。注意:你 不能 修改非 ‘?’ 字符。题目测试用例保证 除 ‘?’ 字符 之外,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。解:“x?y"=>"xzy"“x?y" => "xzy"“x?y"原创 2020-09-06 14:13:58 · 307 阅读 · 0 评论 -
[Python3] 领扣第22场周赛 题解
327. 计算距离和描述对于给定数组中的每个元素,计算它与值相同的所有其他元素的距离和,即索引差的绝对值之和,在数组中返回结果值。例如,如果数组中下标2和3的元素相等,则元素2的距离和为| 2 - 3 | =1,3号元素的距离和为| 3 - 2 | =1。解:感觉写麻烦了 ,没想过有没有简单点。。class Solution: """ @param a: an integer array @return: an integer array """ def原创 2020-09-04 14:03:31 · 314 阅读 · 0 评论 -
[Python3] 领扣第23场周赛 题解
P1 滑动数独描述给定一个3×n3\times n3×n 的矩阵 number,并且该矩阵只含有1到9的正整数。考虑有一个大小为 3×33\times 33×3 滑动窗口,从左到右遍历该矩阵 number,那么该滑动窗口在遍历整个矩阵的过程中会有n-2个。现在你的任务是找出这些滑动窗口是否含有1到9的所有正整数请返回一个长度为n-2的答案数组,如果第i个滑动窗口含有1到9的所有正整数,那么答案数组的第i个元素为true,否则为falsefrom functools import reduce原创 2020-09-03 03:18:03 · 313 阅读 · 2 评论 -
[Python3] 超级码力在线编程大赛初赛 第2场 题解
P1 三角魔法描述小栖必须在一个三角形中才能施展魔法,现在他知道自己的坐标和三个点的坐标,他想知道他能否施展魔法点在边上也属于三角形内−109<=x,y<=109-10^{9}<=x, y<=10^{9}−109<=x,y<=109解:判断是否共线判断是否在三角形内补充知识(好久之前学的,早忘了):判断是否共线对于三个点(x0,y0)(x0, y0)(x0,y0) ,(x1,y1)(x1, y1)(x1,y1) ,(x2,y2)(x2, y原创 2020-08-31 08:16:05 · 7204 阅读 · 0 评论 -
[Leetcode/Python3] 第204场周赛题解
P1 重复至少 K 次且长度为 M 的模式给你一个正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式。模式 是由一个或多个值组成的子数组(连续的子序列),连续 重复多次但 不重叠 。 模式由其长度和重复次数定义。如果数组中存在至少重复 k 次且长度为 m 的模式,则返回 true ,否则返回 false 。解:数组不支持hash,转化为字符串就好了class Solution: def containsPattern(self, arr: List[int原创 2020-08-31 01:10:47 · 5978 阅读 · 0 评论 -
[Python3] 超级码力在线编程大赛初赛 第1场题解
P1 树木规划描述在一条直的马路上,有 nnn棵树,每棵树有一个坐标,代表它们距离马路起点的距离。 如果每相邻的两棵树之间的间隔不小于 ddd,那么我们认为这些树是美观的。 请计算出最少移除多少棵树,可以让这些树变得美观。树木的棵树为 nnn,1≤n≤1051 \leq n \leq 10^{5}1≤n≤105。 树木的坐标用 treestreestrees表示,0≤0 \leq0≤ trees i≤109_{i} \leq 10^{9}i≤109。 最小美观间隔为 ddd,1≤d≤10∘1 \le原创 2020-08-29 12:47:56 · 5391 阅读 · 0 评论 -
[Python/PyQt5] 24点
1. 用pyqt5designer画一个简单的界面2. 用PyUIC将display.ui转化为python代码,然后编辑代码display.py# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'display.ui'## Created by: PyQt5 UI code generator 5.15.0## WARNING: Any manual changes made to原创 2020-08-28 23:48:13 · 4746 阅读 · 0 评论 -
[Leetcode/python3]第203场周赛题解
P1 圆形赛道上经过次数最多的扇区给你一个整数 n 和一个整数数组 rounds 。有一条圆形赛道由 n 个扇区组成,扇区编号从 1 到 n 。现将在这条赛道上举办一场马拉松比赛,该马拉松全程由 m 个阶段组成。其中,第 i 个阶段将会从扇区 rounds[i - 1] 开始,到扇区 rounds[i] 结束。举例来说,第 1 阶段从 rounds[0] 开始,到 rounds[1] 结束。请你以数组形式返回经过次数最多的那几个扇区,按扇区编号 升序 排列。注意,赛道按扇区编号升序逆时针形成一个圆(请原创 2020-08-25 06:48:52 · 5981 阅读 · 0 评论 -
1754. 骑士精神
描述 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士,且有一个空位。在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空位上。给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精神,他们必须以最少的步数完成任务,若果步数大于15,返回-1。目标棋盘是 “11111” “01111” “00*11” “00001” “00000”解法:问题等价于从最终状态经过15步是否能达到起始状态。.原创 2020-08-18 03:46:56 · 3057 阅读 · 0 评论 -
[Leetcode/python3] 第202场周赛题解
P1 存在连续三个奇数的数组class Solution: def threeConsecutiveOdds(self, arr: List[int]) -> bool: cur = 0 for x in arr: cur = (x & 1) * (cur + (x & 1)) if cur == 3: return True return Fal原创 2020-08-16 15:46:55 · 5993 阅读 · 0 评论 -
[Leetcode]第197场周赛
第197场周比赛入口 https://leetcode-cn.com/contest/weekly-contest-197/Number of Good Pairsfrom collections import Counter as Cclass Solution: def numIdenticalPairs(self, nums): def f(x): return x*(x-1) // 2 return sum(map(f, [n for a, n in原创 2020-07-14 12:56:55 · 202 阅读 · 0 评论 -
拓补排序Python实现以及几道题的应用
什么是拓扑排序?对一个有向无环图(Directed AcyclicGraph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(TopologicalOrder)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。如何进行拓扑排序?对于给定的先后依赖关系,我们用一个Graph去描述,同时记录每个点的入度原创 2020-06-14 19:14:45 · 3743 阅读 · 0 评论 -
[LeetCode] 第193场周赛
P3给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。解题思路:第一个想法是用dp记录以第i多花作为最后一个选择的花构成一束花,所需要要的虽少时间. 但是,我需要超过O(mn)O(mn)O(mn)的时间。很显然,超时了看到数据原创 2020-06-14 12:08:21 · 117 阅读 · 0 评论 -
[LeetCode] 第28场双周赛
P3给你一个整数数组 arr 和一个整数值 target 。请你在 arr 中找 两个互不重叠的子数组 且它们的和都等于 target 。可能会有多种方案,请你返回满足要求的两个子数组长度和的 最小值 。请返回满足要求的最小长度和,如果无法找到这样的两个子数组,请返回 -1 。解题思路:我们会解一个子数组和的长度最小问题。如何计算两个不想交子数组的长度和最小呢?假设,我们在i的位置发现从k到i的和满足条件,这时候如果我们知道位置k左侧满足条件的子数组长度是多少解决了到iii时的问题。那么,不难原创 2020-06-14 02:25:14 · 219 阅读 · 0 评论 -
Leetcode 第192场周赛
P1 重新排列数组 显示英文描述给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7]解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]示例 2:输入:nums = [原创 2020-06-07 12:05:30 · 205 阅读 · 0 评论 -
Leetcode 第190场周赛
都是简单题。主要看基础函数的熟练度,手速快不快。给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任原创 2020-05-24 13:56:27 · 181 阅读 · 0 评论 -
力扣周赛189
题目连接:link这次周赛质量有点差。1到3题,我没发现考点,就是理解题目,直接翻译成代码就可以了。而第四题,考的是计算几何,网上有类似的题目,还有源代码。还就是下次比赛应该会用python3写了。 因为scala在做竞赛题时,会出现MLE,优化会浪费很多时间。代码:class Solution: def busyStudent(self, s: List[int], e: List[int], q: int) -> int: return sum([1 for a,原创 2020-05-20 14:47:06 · 212 阅读 · 0 评论