- 博客(53)
- 收藏
- 关注
原创 12.9 每日一题 62. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3. 向下 ->
2020-12-09 10:22:40
152
转载 11.22 每日一题 242. 有效的字母异位词
给定两个字符串 s 和t ,编写一个函数来判断 t 是否是 s的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?通过次数179,064 | 提交次数283,805代码实现class Solution: def isAn
2020-11-23 10:02:18
98
原创 11.23 每日一题 452. 用最少数量的箭引爆气球
在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有气球全部被引爆,所需的弓箭的
2020-11-23 09:57:58
142
原创 11.20 每日一题 147. 对链表进行插入排序
对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出: 1->2
2020-11-20 10:48:59
81
原创 11.19 每日一题 283. 移动零
给定一个数组 nums,编写一个函数将所有 0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。通过次数247,393 | 提交次数392,424代码实现栈方法class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not
2020-11-19 10:42:03
111
原创 11.18 每日一题 134. 加油站
在一条环路上有 N 个加油站,其中第i个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i个加油站开往第i+1 个加油站需要消耗汽油cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入: gas = [1,2,3,4,5]cost = [3,4,5,1,2]输出: 3
2020-11-18 09:35:19
217
原创 11.17 每日一题 1030. 距离顺序排列矩阵单元格
给出 R行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为(r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1)和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)示例 1:输入:R = 1, C = 2, r0 =
2020-11-17 10:17:27
92
原创 11.14 每日一题 1122. 数组的相对排序
给你两个数组,arr1和 arr2,arr2 中的元素各不相同arr2中的每个元素都出现在arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2中出现过的元素需要按照升序放在 arr1的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]提示:arr1.length, arr2.length &l
2020-11-14 13:13:01
119
原创 11.13 每日一题 328. 奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6->4-
2020-11-13 10:11:50
90
转载 加速下载python包
国内源:清华:`https://pypi.tuna.tsinghua.edu.cn/simple`阿里云:`https://mirrors.aliyun.com/pypi/simple/`中国科技大学` https://pypi.mirrors.ustc.edu.cn/simple/`华中理工大学:`https://pypi.hustunique.com/`山东理工大学:`https://pypi.sdutlinux.org/ `豆瓣:`https://pypi.douban.com
2020-11-11 15:26:55
176
原创 jupyter notebook 加载虚拟环境
首先创建虚拟环境,并进入虚拟环境。在终端安装ipykernelpip install ipykernel然后执行如下命令将创建的虚拟环境加入到jupyter中python -m ipykernel install --user --name=xxx(自定义kernel名)最终在ipynb文件中的服务下的改变服务选择自定义的服务。...
2020-11-11 15:13:52
192
原创 11.11 每日一题 514. 自由之路
视频游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转ring 以使 key 的一个字符在 12:00方向对齐,然后按下中心按钮,以此逐个拼写完key中的所有字符。旋转 ring 拼出 key 字符key
2020-11-11 09:40:18
175
原创 11.10 每日一题 31. 下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1通过次数100,312 | 提交次数287,101代码实现class Solution: def nextPermutation(self, nums: L
2020-11-10 10:03:42
58
原创 11.9 每日一题 973. 最接近原点的 K 个点
我们有一个由平面上的点组成的列表 points。需要从中找出 K个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。示例 1:输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释: (1, 3) 和原点之间的距离为 sqrt(10),(-2, 2) 和原点之间的距离为 sqrt(8),由于 sqrt(8) < sqrt(10),(-2, 2) 离原点
2020-11-09 11:00:41
135
原创 11.8 每日一题 122. 买卖股票的最佳时机 II
给定一个数组,它的第i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。**注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价
2020-11-08 13:04:06
91
原创 11.7 每日一题 327. 区间和的个数
给定一个整数数组 nums,返回区间和在[lower, upper]之间的个数,包含 lower 和 upper。区间和 S(i, j)表示在nums中,位置从 i 到j的元素之和,包含i和 j (i ≤ j)。说明:最直观的算法复杂度是 O(n2),请在此基础上优化你的算法。示例:输入: nums = [-2,5,-1], lower = -2, upper = 2,输出: 3 解释: 3个区间分别是: [0,0], [2,2], [0,2],它们表示的和分别为: -2, -1, 2。通
2020-11-07 11:14:30
128
原创 11.4 每日一题 57. 插入区间
给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例 1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例 2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[1,2],[3,10],[12,16]]解释
2020-11-04 10:01:17
95
原创 11.3 每日一题 941. 有效的山脉数组
给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3在 0 < i < A.length - 1 条件下,存在 i 使得:- A[0] < A[1] < ... A[i-1] < A[i]- A[i] > A[i+1] > ... > A[A.length - 1]示例 1:输入:[2,1]输出:false
2020-11-03 10:23:42
100
原创 10.31 每日一题 381. O(1) 时间插入、删除和获取随机元素 - 允许重复
设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。注意: 允许出现重复元素。insert(val):向集合中插入元素 val。remove(val):当 val存在时,从集合中移除一个val。getRandom:从现有集合中随机获取一个元素。每个元素被返回的概率应该与其在集合中的数量呈线性相关。示例:// 初始化一个空的集合。RandomizedCollection collection = new RandomizedCollection();// 向集合中插入
2020-10-31 13:19:31
83
原创 10.30 每日一题 463. 岛屿的周长
给定一个包含 0和1的二维网格地图,其中 1表示陆地 0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1的正方形。网格为长方形,且宽度和高度均不超过 100。计算这个岛屿的周长。示例 :输入:[[0,1,0,0], [1,1,1,0], [0,1,0,0], [1,1,0,0]]输出: 16解
2020-10-30 09:30:47
94
原创 10.29每日一题129. 求根到叶子节点数字之和
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13.因此,数字总和 = 12 + 13 = 25.示例
2020-10-29 12:18:34
103
原创 10.28 每日一题 1207. 独一无二的出现次数
给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]输出:true提示:1 <=
2020-10-28 09:32:53
70
原创 10.27每日一题 144. 二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?通过次数192,753 | 提交次数285,362代码实现递归实现# Definition for a binary tree node.class TreeNode: def __init__(self, val=0, left=None, right=None)
2020-10-27 09:50:41
73
原创 10.26每日一题 1365. 有多少小于当前数字的数字
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的j的数量,其中 j 满足j != i 且 nums[j] < nums[i]。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释: 对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。 对于 nums[1]=1 不存在比它小的数字。对于 nums[2]=2 存在一
2020-10-26 09:59:21
70
原创 10.25每日一题 845. 数组中的最长山脉
我们把数组 A 中符合下列属性的任意连续子数组B 称为 “山脉”:B.length >= 3存在0 < i < B.length - 1使得B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1](注意:B 可以是 A 的任意子数组,包括整个数组 A。)给出一个整数数组 A,返回最长 “山脉” 的长度。如果不含有 “山脉” 则返回 0。示例 1:输入:[2,1,
2020-10-25 13:26:12
92
原创 10.24每日一题 1024. 视频拼接
你将会获得一系列视频片段,这些片段来自于一项持续时长为T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1]结束。我们甚至可以对这些片段自由地再剪辑,例如片段[0, 7]可以剪切成 [0, 1] + [1, 3] + [3, 7] 三部分。我们需要将这些片段进行再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目,如果无法完成该任务,则返回 -1 。示例
2020-10-24 10:02:38
411
原创 10.23 每日一题 234. 回文链表
请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?通过次数141,334 | 提交次数322,133代码实现O(n) 时间复杂度和 O(n) 空间复杂度# Definition for singly-linked list.class ListNode: def __init__(self,
2020-10-23 09:52:24
131
1
原创 10.22 每日一题 763. 划分字母区间
字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = "ababcbacadefegdehijhklij"输出:[9,7,8]解释:划分结果为 "ababcbaca", "defegde", "hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。提示:S的长度在[1, 50
2020-10-22 09:53:57
90
原创 10.21 每日一题 925. 长按键入
你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。示例 1:输入:name = "alex", typed = "aaleex"输出:true解释:'alex' 中的 'a' 和 'e' 被长按。示例 2:输入:name = "saeed", typed = "ssaaedd"输出:false解释:'e'
2020-10-21 09:48:56
135
1
原创 10.20 每日一题 143. 重排链表
给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.通过次数47,851 | 提交次数82,512代码实现
2020-10-20 10:32:52
1455
原创 10.19 每日一题 844. 比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 #代表退格字符。注意: 如果对空文本输入退格字符,文本继续为空。示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S = "a##c", T = "#a#c"输出:true解释:S 和 T 都会变
2020-10-19 11:05:49
74
原创 10.18 每日一题 19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?通过次数259,946 | 提交次数648,405代码实现两趟扫描# Definition for singly-linked list.class ListNode: d
2020-10-18 15:46:03
139
1
原创 10.16 每日一题 977. 有序数组的平方
给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= A.length <= 10000-10000 <= A[i] <= 10000A 已按非递减顺序排序。通过次数57,889 | 提交次数79,559代码实现使用bisectcla
2020-10-16 10:09:50
123
原创 10.15 每日一题 116. 填充每个节点的下一个右侧节点指针
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:输入:{"$id":"1","left":{"$id":"2","left":{"$i
2020-10-15 09:42:59
78
原创 10.14每日一题 1002. 查找常用字符
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。示例 1:输入:["bella","label","roller"]输出:["e","l","l"]示例 2:输入:["cool","lock","cook"]输出:["c","o"]提示:1 <= A.length <= 1001 <
2020-10-14 09:29:09
88
原创 10.13 每日一题 24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.通过次数161,345 | 提交次数240,479代码实现# Definition for singly-linked list.class ListNode: def __init__(self, val=0, next=None): self
2020-10-13 09:29:15
508
原创 10.12每日一题 530. 二叉搜索树的最小绝对差
给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:输入: 1 \ 3 / 2输出:1解释:最小绝对差为 1,其中 2 和 1 的差的绝对值为 1(或者 2 和 3)。提示:树中至少有 2 个节点。本题与 783 https://leetcode-cn.com/problems/minimum-distance-between-bst-nodes/ 相同通过次数26,113 | 提交次数44,070代码实现
2020-10-12 09:43:24
112
1
原创 10.11 leetcode 第 210 场周赛
括号的最大嵌套深度如果字符串满足一下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):-字符串是一个空字符串 "",或者是一个不为 "(" 或 ")" 的单字符。-字符串可以写为 AB(A 与 B 字符串连接),其中 A 和 B 都是 有效括号字符串 。-字符串可以写为 (A),其中 A 是一个 有效括号字符串 。类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):depth("") = 0depth(A .
2020-10-11 14:01:22
111
原创 10.11每日一题 416. 分割等和子集
给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.通过次数65,635 | 提交次数134,170代码实现class Solution: d
2020-10-11 13:39:15
146
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人