leetcode
文章平均质量分 69
hover_load
这个作者很懒,什么都没留下…
展开
-
LeetCode第221场周赛T3 球会落何处
5210. 球会落何处题目难度:Medium题目描述用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 “V” 形图案,或者被一块挡导向到箱原创 2020-12-27 12:07:40 · 362 阅读 · 2 评论 -
力扣第 42 场双周赛T1:无法吃午餐的学生数量
5621. 无法吃午餐的学生数量题目难度:Easy(考完英语回来就做出来一道题,懂了,我是垃圾)学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个栈里,每一轮:如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。否则,这名学生会 放弃这个三明治 并回到队列的尾部。这个过程会一直持续到队列里所有学生都不喜欢栈顶的三明治为止。给你两个整数数组原创 2020-12-27 00:00:10 · 692 阅读 · 2 评论 -
LeetCode49. 字母异位词分组
49. 字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。Solution用排序后的字符串做key,存到字典里class Solution(object): def原创 2020-12-14 08:10:01 · 140 阅读 · 0 评论 -
LeetCode376. 摆动序列
376. 摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(原创 2020-12-12 08:57:41 · 144 阅读 · 0 评论 -
LeetCode649. Dota2 参议院
649. Dota2 参议院Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇)Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。宣布胜利:如果参议员发现有权利投票的参议员都是同一个阵营的,他可以宣布胜利并决定在游戏中的有关变化。给定一个字符串代表每个参原创 2020-12-11 09:14:23 · 196 阅读 · 0 评论 -
LeetCode31. 下一个排列——双指针
LeetCode31. 下一个排列Difficulty: 中等实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]示例 4:输入:nums =原创 2020-12-10 18:36:31 · 99 阅读 · 0 评论 -
Leetcode1041. 困于环中的机器人
1041. 困于环中的机器人题目在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人可以接受下列三条指令之一:“G”:直走 1 个单位“L”:左转 90 度“R”:右转 90 度机器人按顺序执行指令 instructions,并一直重复它们。只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。示例示例 1:输入:"GGLLGG"输出:true解释:机器人从 (0,0) 移动到 (0,2),转 180 度,然后回到 (0,0)。重复原创 2020-11-27 15:52:51 · 264 阅读 · 1 评论 -
Leetcode134. 加油站
solution我觉着写之前要先分析好情况,考虑太少了而且对过程分析马马虎虎就开始写会写错吧((因为加完油马上就去下一站了,gas和cost可以合成一个。比起一般模拟把所有路径都走一遍,如果这次的起点是a,可以在这次失败后的下一站b重新开始。因为失败之前整体上说油都是不减的,在(a,b)之间选点都不行((好水的解释class Solution(object): def canCompleteCircuit(self, gas, cost): """ :typ.原创 2020-11-18 20:46:20 · 135 阅读 · 0 评论 -
Leetcode1122.数组的相对排序
换edge后发现插件好少,而且不想开开发者模式。。于是力扣题目转markdown没得用了,水????题目解法因为元素范围0~1000蛮少的,用桶排序/** * Note: The returned array must be malloced, assume caller calls free(). */int* relativeSortArray(int* arr1, int arr1Size, int* arr2, int arr2Size, int* returnSize){原创 2020-11-14 10:27:16 · 84 阅读 · 0 评论 -
Leetcode 633. 平方数之和——双指针
167题的变式,水((633. 平方数之和Difficulty: 中等给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a<sup>2</sup> + b<sup>2</sup> = c 。示例 1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:输入:c = 3输出:false示例 3:输入:c = 4输出:true示例 4:输入:c = 2输出:true示例 5:原创 2020-11-05 23:15:34 · 161 阅读 · 2 评论 -
Leetcode941. 有效的山脉数组
水( 分类讨论辣鸡->面向测试用例编程941. 有效的山脉数组Difficulty: 简单给定一个整数数组 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] > ... &g原创 2020-11-03 08:00:11 · 135 阅读 · 1 评论 -
力扣报错heap-buffer-overflow
今天的签到题,做完之后力扣报错:heap-buffer-overflow,原因是对地址的非法访问。(找了半天错。。。代码如下:/** * Note: The returned array must be malloced, assume caller calls free(). */int* intersection(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){ int *X=(int *)ma原创 2020-11-02 22:25:43 · 3671 阅读 · 1 评论 -
Leetcode135. 分发糖果
135. 分发糖果Difficulty: 困难老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子原创 2020-11-01 18:33:36 · 158 阅读 · 0 评论 -
Leetcode89.格雷编码
89. 格雷编码Difficulty: 中等格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 010 - 211原创 2020-10-01 10:47:31 · 110 阅读 · 1 评论 -
Leetcode213.打家劫舍II——动态规划
213. 打家劫舍 IIDifficulty: 中等你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下, 能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房原创 2020-09-25 10:03:07 · 158 阅读 · 0 评论 -
Leetcode198. 打家劫舍——动态规划
198. 打家劫舍Difficulty: 简单你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 =原创 2020-09-25 09:19:48 · 143 阅读 · 0 评论 -
Leetcode528. 按权重随机选择
528. 按权重随机选择Difficulty: 中等给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。也就是说,选取下标 i 的概率为 w[i] / sum(w) 。示例 1原创 2020-09-24 23:08:31 · 243 阅读 · 0 评论 -
Leetcode229. 求众数 II——摩尔投票法
229. 求众数 IIDifficulty: 中等给定一个大小为n的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。示例 1:输入: [3,2,3]输出: [3]示例 2:输入: [1,1,1,3,3,2,2,2]输出: [1,2]Solution好想吐槽,为啥有Ⅱ没有Ⅰ。。原来有道题是找半数元素的:169. 多数元素因为对复杂度有限制,无脑办法们按理说不能用。所以用摩尔投票法。摩尔投票法分两步,抵消&原创 2020-09-24 21:52:57 · 194 阅读 · 0 评论 -
Leetcode66. 加一
66. 加一Difficulty: 简单给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。Solution狼灭法class Solution(object):原创 2020-09-24 20:08:51 · 73 阅读 · 0 评论 -
一队蚂蚁爬杆子问题
1503. 所有蚂蚁掉下来前的最后一刻Difficulty: 中等有一块木板,长度为 n 个 单位 。一些蚂蚁在木板上移动,每只蚂蚁都以 每秒一个单位 的速度移动。其中,一部分蚂蚁向 左 移动,其他蚂蚁向 右 移动。当两只向 不同 方向移动的蚂蚁在某个点相遇时,它们会同时改变移动方向并继续移动。假设更改方向不会花费任何额外时间。而当蚂蚁在某一时刻 t 到达木板的一端时,它立即从木板上掉下来。给你一个整数 n 和两个整数数组 left 以及 right 。两个数组分别标识向左或者向右移动的蚂蚁在 t原创 2020-09-23 21:16:11 · 449 阅读 · 0 评论 -
Leetcode38. 外观数组——双指针
38. 外观数列Difficulty: 简单给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1 ” ,记作 21描原创 2020-09-23 20:42:51 · 89 阅读 · 2 评论 -
Leetcode6. Z字形变换——模拟法
6. Z 字形变换Difficulty: 中等将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int num原创 2020-09-21 22:45:02 · 658 阅读 · 2 评论 -
Leetcode11. 盛最多水的容器——双指针
11. 盛最多水的容器Difficulty: 中等给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例:输入:[1,8,6,2,原创 2020-09-21 19:33:46 · 182 阅读 · 0 评论 -
Leetcode7. 整数反转
7. 整数反转Difficulty: 简单给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321** 示例 2:**输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。SolutionLanguag原创 2020-09-20 21:02:54 · 93 阅读 · 1 评论 -
Leetcode9. 回文数
9. 回文数Difficulty: 简单判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?Solution原创 2020-09-20 20:34:09 · 198 阅读 · 0 评论 -
leetcode20. 有效的括号
20. 有效的括号Difficulty: 简单给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: "{原创 2020-09-11 09:51:34 · 108 阅读 · 2 评论 -
leetcode13. 罗马数字转整数
13. 罗马数字转整数Difficulty: 简单罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做原创 2020-09-11 09:45:49 · 78 阅读 · 1 评论 -
leetcode12. 整数转罗马数字
12. 整数转罗马数字Difficulty: 中等罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做原创 2020-09-11 09:09:02 · 524 阅读 · 0 评论 -
leetcode672. 灯泡开关 Ⅱ——减小搜索空间(规律题)
672. 灯泡开关 ⅡDifficulty: 中等现有一个房间,墙上挂有 n 只已经打开的灯泡和 4 个按钮。在进行了 m 次未知操作后,你需要返回这 n 只灯泡可能有多少种不同的状态。假设这 n 只灯泡被编号为 [1, 2, 3 …, n],这 4 个按钮的功能如下:将所有灯泡的状态反转(即开变为关,关变为开)将编号为偶数的灯泡的状态反转将编号为奇数的灯泡的状态反转将编号为 3k+1 的灯泡的状态反转(k = 0, 1, 2, …)示例 1:输入: n = 1, m = 1.输出:原创 2020-09-09 21:54:21 · 261 阅读 · 0 评论 -
leetcode167. 两数之和 II - 输入有序数组——双指针
167. 两数之和 II - 输入有序数组Difficulty: 简单给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释:原创 2020-09-07 20:43:10 · 154 阅读 · 0 评论 -
leetcode384.打乱数组——洗牌算法
384. 打乱数组Difficulty: 中等打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。solution.shuffle();// 重设数组到它的初始状态[1,2,3]。solution.reset();// 随机返回数组[1,2,3原创 2020-09-07 19:24:34 · 309 阅读 · 0 评论 -
leetcode204. 计数质数——素数筛
204. 计数质数Difficulty: 简单统计所有小于非负整数 _n _的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。Solution上素数筛((一个知识点水两遍这个表大了好吃内存…有待解决if n<2: return 0p=[1]*ns=0for i in range(2,n): if p[i]==1: k=i s+=1 while原创 2020-09-07 18:32:10 · 143 阅读 · 0 评论 -
leetcode292. Nim游戏——博弈论
292. Nim 游戏Difficulty: 简单你和你的朋友,两个人一起玩 :桌子上有一堆石头,每次你们轮流拿掉 1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走。Solution分析:当先原创 2020-09-07 18:14:46 · 100 阅读 · 0 评论 -
leetcode877. 石子游戏——博弈论
877. 石子游戏Difficulty: 中等亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。示例:输入:[5,3,4,5]原创 2020-09-06 15:35:49 · 164 阅读 · 0 评论