- 博客(86)
- 收藏
- 关注
原创 【LEETCODE】23. 合并 K 个升序链表
很经典的题目, 这次是为了熟悉Go的语法。在使用文档中的heap例程时候, pop函数返回的是一个any类型,需要做一次转化。可以看见的的是Go的性能不错,用时只有4ms。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。
2023-08-12 13:22:24
254
原创 到达终点数字
第 i 次移动(从 i == 1 开始,到 i == numMoves ),在选择的方向上走 i 步。给定整数 target ,返回 到达目标所需的 最小 移动次数(即最小 numMoves )。链接:https://leetcode.cn/problems/reach-a-number。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。在一根无限长的数轴上,你站在0的位置。终点在target的位置。每次你可以选择向左或向右移动。来源:力扣(LeetCode)
2022-11-04 18:04:44
1015
2
原创 [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
3565
原创 [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
158
原创 [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
3407
原创 [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
3887
原创 [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
200
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
92
原创 [Leetcode/Python3] 第208场周赛
P1 文件夹操作日志搜集器每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。下面给出对变更操作的说明:“…/” :移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。“./” :继续停留在当前文件夹。“x/” :移动到名为 x 的子文件夹中。题目数据 保证总是存在文件夹 x 。给你一个字符串列表 logs ,其中 logs[i] 是用户在 ith 步执行的操作。文件系统启动时位于主文件夹,然后执行 logs 中的操作。执行完所有变更文件夹
2020-09-27 16:49:56
140
原创 [C++] vector<int> vs. int[]
背景vector<int>是可以改变大小的。int a[100]是指定大小为100的, 而且必须的声明的时候给出大小。今天, 做了阿里周赛的第一题, 一直超时,赛后才知道是这个原因。写了个简单的对比代码, 计算了时间, 在知道数据范围的时候, int []来初始化, 能提高效率。有兴趣的话, 可以自己试一下。题目描述给出一个只含有小写字母的字符串的集合以及一个目标串(target),输出所有可以经过不多于 k 次操作得到目标字符串的字符串。你可以对字符串进行一下的3种操作:
2020-09-26 15:28:22
656
原创 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
125
原创 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
119
原创 501. 二叉搜索树中的众数
描述给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)力扣(LeetC
2020-09-24 14:42:32
89
原创 LCP Fall Team 2020
LCP 22. 黑白方格画小扣注意到秋日市集上有一个创作黑白方格画的摊位。摊主给每个顾客提供一个固定在墙上的白色画板,画板不能转动。画板上有 n * n 的网格。绘画规则为,小扣可以选择任意多行以及任意多列的格子涂成黑色,所选行数、列数均可为 0。小扣希望最终的成品上需要有 k 个黑色格子,请返回小扣共有多少种涂色方案。注意:两个方案中任意一个相同位置的格子颜色不同,就视为不同的方案。解剩余的面积为n2−kn^2-kn2−k, 把行和列都往上和左移动, 得到矩形如下:------------
2020-09-23 15:24:22
434
原创 617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入:Tree 1 Tree 2 1 2
2020-09-23 15:23:26
129
原创 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
60
原创 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
72
原创 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
72
原创 [Leetcode/python3] 第207场周赛
P1 重新排列单词间的空格给你一个字符串 text ,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余的空格放置在字符串末尾 ,这也意味着返回的字符串应当与原 text 字符串的长度相等。返回 重新排列空格后的字符串 。Solutionclass Solution:
2020-09-20 20:28:15
196
原创 云栖大会限时抢答赛
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
1118
原创 [Leetcode/c++] 37解数独
题目编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。DFS经典问题, 一个个试着去填, 能填完就是对的。代码CPP#include <bits/stdc++.h>#include <unordered_map>#include <unordered_set&g
2020-09-15 11:21:07
125
原创 [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
285
原创 [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
539
原创 [Leetcode/c++] 79. 单词搜索
题目给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 word = "ABCB", 返回
2020-09-13 08:25:27
91
原创 [Leetcode/c++] 720. 词典中最长的单词
题目给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-word-in-dictionary著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法字典树 + dfs搜索字典树的构建, 用过的acm的k叉
2020-09-12 08:07:52
268
原创 [Leetcode/c++] 637. 二叉树的层平均值
题目给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。解法逐层遍历。了解vector的使用。代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */
2020-09-12 07:56:03
147
原创 求x/y%mod
0. 前言写这个文章是因为遇到一些题,要求解x/y%modx/y\%modx/y%mod, 其中mod=1e9+7mod = 1e9+7mod=1e9+7, x,yx,yx,y都很大。不能直接求。 当然,第一次总是不会做的, 然后就查资料呗。1. 逆元定义我们要求问题x/y%modx/y\%modx/y%mod, 如果我们找到这样一个数y^\hat{y}y^, 满足x∗y^%p=x/y%px*\hat{y}\%p=x/y\%px∗y^%p=x/y%p。 那么, 我们的问题就解决了。 这个y^\ha
2020-09-09 10:43:40
622
1
原创 [Python3] 超级码力在线编程大赛初赛 第3场 题解
P1 最大公倍数描述小栖有一个区间[a,b][a, b][a,b],他准备从中取三个数,他想知道如何取才能使得它们的最小公倍数最大 请直接告诉小栖最小公倍数是多少。1<=a<b<=50001<=a<b<=50001<=a<b<=5000b−a>=2b-a>=2b−a>=2解:保留最大的两个元素, 然后遍历剩下的元素找到最小公倍数的最大值。class Solution: """ @param a: Lef
2020-09-07 07:57:57
155
原创 [Python3] 力扣第205场周赛 题解
P1. 替换所有的问号 显示英文描述给你一个仅包含小写英文字母和 ‘?’ 字符的字符串 s ,请你将所有的 ‘?’ 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。注意:你 不能 修改非 ‘?’ 字符。题目测试用例保证 除 ‘?’ 字符 之外,不存在连续重复的字符。在完成所有转换(可能无需转换)后返回最终的字符串。如果有多个解决方案,请返回其中任何一个。可以证明,在给定的约束条件下,答案总是存在的。解:“x?y"=>"xzy"“x?y" => "xzy"“x?y"
2020-09-06 14:13:58
304
原创 [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
原创 [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
296
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
7190
原创 [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
5970
原创 [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
5384
原创 [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
4742
原创 PyCharm + PyQt5Designer + PyUIC 配置
1. 安装完pycharm, anaconda3之后pip install pyqt5pip install pyqt5-tools2. 将pyqt5 designer 和 pyuic添加到external tools中
2020-08-27 02:20:33
5581
原创 [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
5972
原创 [Leetcode/python] 第33场双周赛
千位分隔数给你一个整数 n,请你每隔三位添加点(即 “.” 符号)作为千位分隔符,并将结果以字符串格式返回。’解: 打卡题。 WA了三次- -点好写成了逗号数位不对前导零处理class Solution: def thousandSeparator(self, n: int) -> str: ret = "" def f(x): if len(x) < 3: return "0"*
2020-08-23 00:00:15
1318
2
原创 [Leetcode/每日一题] 647. 回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。class Solution: def countSubstrings(self, s: str) -> int: dp = [[False for _ in range(len(s))] for _ in range(len(s))] res = 0 for length i.
2020-08-19 01:23:56
201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人