Leetcode
文章平均质量分 54
Leetcode题目求解
SnailTyan
纸上得来终觉浅,绝知此事要躬行。
展开
-
Leetcode 1984. Minimum Difference Between Highest and Lowest of K Scores
Leetcode 1984. Minimum Difference Between Highest and Lowest of K Scores原创 2023-04-01 21:00:00 · 407 阅读 · 0 评论 -
Leetcode 561. Array Partition
Leetcode 561. Array Partition原创 2023-04-01 21:00:00 · 420 阅读 · 0 评论 -
Leetcode 1200. Minimum Absolute Difference
Leetcode 1200. Minimum Absolute Difference原创 2023-04-01 21:00:00 · 416 阅读 · 0 评论 -
Leetcode 821. Shortest Distance to a Character
Leetcode 821. Shortest Distance to a Character原创 2023-03-28 21:00:00 · 124 阅读 · 0 评论 -
Leetcode 794. Valid Tic-Tac-Toe State
Leetcode 794. Valid Tic-Tac-Toe State原创 2023-03-28 21:00:00 · 142 阅读 · 0 评论 -
Leetcode 844. Backspace String Compare
Leetcode 844. Backspace String Compare原创 2023-03-28 21:00:00 · 123 阅读 · 0 评论 -
Leetcode 2399. Check Distances Between Same Letters
Leetcode 2399. Check Distances Between Same Letters原创 2023-03-28 21:00:00 · 163 阅读 · 0 评论 -
Leetcode 2144. Minimum Cost of Buying Candies With Discount
Leetcode 2144. Minimum Cost of Buying Candies With Discount原创 2023-04-01 21:00:00 · 309 阅读 · 0 评论 -
Leetcode 2390. Removing Stars From a String
Removing Stars From a String原创 2023-02-03 22:00:00 · 189 阅读 · 0 评论 -
Leetcode 1598. Crawler Log Folder
Crawler Log Folder原创 2023-02-03 22:00:00 · 168 阅读 · 0 评论 -
Leetcode 1209. Remove All Adjacent Duplicates in String II
Remove All Adjacent Duplicates in String II原创 2023-02-03 22:00:00 · 208 阅读 · 0 评论 -
Leetcode 1047. Remove All Adjacent Duplicates In String
字符串原创 2023-02-03 22:00:00 · 163 阅读 · 0 评论 -
Leetcode 93. Restore IP Addresses
Restore IP Addresses原创 2022-08-10 19:06:45 · 222 阅读 · 0 评论 -
Leetcode 1417. Reformat The String
Reformat The String原创 2022-08-10 19:05:53 · 229 阅读 · 0 评论 -
Leetcode 575. Distribute Candies
Distribute Candies原创 2022-08-10 19:04:47 · 219 阅读 · 0 评论 -
Leetcode 1103. Distribute Candies to People
Distribute Candies to People原创 2022-08-10 19:03:28 · 183 阅读 · 0 评论 -
Leetcode 2078. Two Furthest Houses With Different Colors
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,两层循环遍历,O(N^2)。Version 1class Solution: def maxDistance(self, colors: List[int]) -> int: distance = 0 length = len(colors)原创 2022-05-08 18:26:26 · 338 阅读 · 0 评论 -
Leetcode 2016. Maximum Difference Between Increasing Elements
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,两层循环遍历,O(N^2)。Version 1class Solution: def maximumDifference(self, nums: List[int]) -> int: length = len(nums) diff = -1原创 2022-05-08 18:24:52 · 257 阅读 · 0 评论 -
Leetcode 1528. Shuffle String
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,根据要求,按顺序将字母填到对应位置即可。Version 1class Solution: def restoreString(self, s: str, indices: List[int]) -> str: res = ['0'] * len(s)原创 2022-05-08 18:23:46 · 243 阅读 · 0 评论 -
Leetcode 1323. Maximum 69 Number
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,从左到右,找到第一个6,将其改为9,返回更改之后的数字。Version 1class Solution: def maximum69Number (self, num: int) -> int: digits = list(str(num))原创 2022-05-08 18:21:49 · 366 阅读 · 0 评论 -
Leetcode 1464. Maximum Product of Two Elements in an Array
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,两层循环遍历,O(N^2)。Version 1class Solution: def maxProduct(self, nums: List[int]) -> int: product = 0 length = len(nums)原创 2022-05-08 18:19:40 · 234 阅读 · 0 评论 -
Leetcode 567. Permutation in String
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,此题与leetcode 438非常类似,思路是一样的。判断s2是否包含s1的变换,可以采用字典的方法,即每个字母的个数及类型相等。先统计字符串s1的字母个数并记录其长度在stat中,遍历字符串s2,如果字母在stat中,则将其记录到字典subs中,否则重置subs,当subs['length']原创 2021-08-27 15:15:51 · 332 阅读 · 0 评论 -
Leetcode 438. Find All Anagrams in a String
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,判断两个字符串是否是Anagrams,可以采用字典的方法,即每个字母的个数及类型相等。先统计字符串p的字母个数并记录其长度在stat中,遍历字符串s,如果字母在stat中,则将其记录到字典subs中,否则重置subs,当subs['length'] = stat['length']时,比较二者是原创 2021-08-27 15:14:55 · 277 阅读 · 0 评论 -
Leetcode 540. Single Element in a Sorted Array
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,使用类似于二分查找的方式寻找单个元素,首先计算中间位置的索引mid,如果mid为奇数,说明数组左半部分有偶数个元素(索引从0开始),比较nums[mid]与其左边的元素nums[mid-1],如果二者相等,则表明左半部分一定不存在单个元素,因此left=mid+1,如果二者不相等,则其一定等于右原创 2021-08-27 15:14:13 · 218 阅读 · 0 评论 -
Leetcode 1671. Minimum Number of Removals to Make Mountain Array
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,分别以数组中的元素作为中心点,在左右两侧分别求最长递增子序列,根据左右两侧的最长递增子序列的长度求出山脉的长度,则要删除的元素个数为数组长度减去最长的山脉长度,速度太慢。Version 2在Version 1的基础上进行了优化,分别求出数组正序和逆序各个位置的最长递增子序列,然后跟Version原创 2021-08-27 15:13:24 · 171 阅读 · 0 评论 -
Leetcode 941. Valid Mountain Array
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,通过up和down分别表示山脉的上下过程,比较数组前后两个数,如果相等,直接返回False,如果前者大于后者,没出现过下山down=False,则将上山设为up=True,如果前者小于后者,出现了上山up=False,则将下山设为down=True,不符合上述条件的都直接返回False,最后如果原创 2021-08-27 15:12:28 · 183 阅读 · 0 评论 -
Leetcode 914. X of a Kind in a Deck of Cards
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,统计元素个数,遍历所有可能的分割数量,下限为2,上限为最少的元素个数,如果满足条件,返回True。Version 1class Solution: def hasGroupsSizeX(self, deck: List[int]) -> bool: stat原创 2021-08-27 15:11:30 · 238 阅读 · 0 评论 -
Leetcode 845. Longest Mountain in Array
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,统计山脉元素个数,首先山脉是先上后下,up和down的状态分别表示山脉的上下状态,初始状态都为False,只有down=True时,才记录山脉的最大长度,即最大子数组的长度,当后一个元素大于前一元素时,如果up=True,说明已经记录了上坡长度,此时判断下坡是否也记录了,如果down=True,原创 2021-08-27 15:10:38 · 206 阅读 · 0 评论 -
Leetcode 1030. Matrix Cells in Distance Order
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,直接根据距离进行排序。Version 使用广度优先搜索。Version 1class Solution: def allCellsDistOrder(self, rows: int, cols: int, rCenter: int, cCenter: int) -> Lis原创 2021-08-27 15:09:37 · 162 阅读 · 0 评论 -
Leetcode 957. Prison Cells After N Days
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,根据变换规则可知,第一位和最后一位总是0,因此只有中间6位数在变,最大可能的变换周期为2^6。因此只要记录变换周期,因此周期中的所有状态就可得出变换结果,使用字典stat来判断每次变换是否与之前的重复,列表state记录状态变化,当出现重复状态时,计算变换的周期peroid,以及一个周期的状态变原创 2021-08-27 15:08:40 · 187 阅读 · 0 评论 -
Leetcode 1567. Maximum Length of Subarray With Positive Product
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,首先要将数组从所有零处断开,这样可以保证乘积一定不为0,采用pre来表示前一个0所在的位置,初始状态为-1,当碰到一个0时,计算不包括0在内的子数组长度m,如果m > 0,说明子数组不为空。要计算子数组的乘积为正数的最长长度,需要统计数组中负数的个数neg,如果为偶数,则最长长度为子数组长原创 2021-08-27 15:06:37 · 157 阅读 · 0 评论 -
Leetcode 1304. Find N Unique Integers Sum up to Zero
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,为了实现和为0,因此添加元素时成对添加+i, -i,如果n为奇数,再加上0即可。Version 1class Solution: def sumZero(self, n: int) -> List[int]: result = [] if n原创 2021-08-27 15:05:32 · 164 阅读 · 0 评论 -
Leetcode 519. Random Flip Matrix
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,使用单一数字作为矩阵的坐标索引,利用字典来保存访问过的矩阵索引,如果随机得到的索引在字典中存在,则继续进行随机索引,直至找到一个未访问过的索引,如果所有索引都访问过,则返回空坐标。Version 1class Solution: def __init__(self, m: in原创 2021-08-27 15:04:43 · 178 阅读 · 0 评论 -
Leetcode 1854. Maximum Population Year
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,创建一个统计年份人数数组,遍历所有日志,遍历出生、死亡之间的年份,累加对应年份的人口,最后找出人口最多最早的年份,注意边界值。Version 2是遍历所有年份,再遍历所有日志,统计每个年份的人口并比较,比Version 1要慢一些。Version 3根据出生年份和死亡年份来更新当年的人口变化,出原创 2021-08-27 15:02:14 · 181 阅读 · 0 评论 -
Leetcode 1658. Minimum Operations to Reduce X to Zero
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,这道题跟Leetcode 560的解法很像,首先计算数组的总和total,如果total < x,则无论如何也不会将x减到0,如果total = x,则需要移除所有元素才能将x变为0,由于x一直是从最左或最右移除,因此问题可以变为:找到一个最大连续子数组,使得其和为total - x,这样原创 2021-08-27 15:00:59 · 226 阅读 · 0 评论 -
Leetcode 1964. Find the Longest Valid Obstacle Course at Each Position
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,这道题跟Leetcode 300很像,可以构造一个最长非递减子序列,使用order作为有序序列保持最长非递减子序列长度,当新元素大于或等于有序序列的最后一个元素时,此时增加新元素到有序序列中,否则,则将新元素插入到当前序列中,替换比其大的元素,保证左侧元素都比它小,此时长度不变,order中相同原创 2021-08-18 16:41:33 · 248 阅读 · 0 评论 -
Leetcode 289. Game of Life
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,遍历所有细胞,统计其周围八个细胞的存活个数,根据规则判断当前细胞状态是否需要改变,如果需要,将其位置及要更新的状态保存到数组中,遍历数组,更新board即可。Version 1class Solution: def gameOfLife(self, board: List[Lis原创 2021-08-18 16:40:54 · 180 阅读 · 0 评论 -
Leetcode 1914. Cyclically Rotating a Grid
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,先根据规律求出每一层的索引,然后按逆时针顺序保存到数组中,则k次循环后当前索引的位置index在列表中的位置为(index+k) % len(circle),因此将当前索引位置的值赋给目标索引位置即可。Version 1class Solution: def rotateGrid原创 2021-08-18 16:40:07 · 211 阅读 · 0 评论 -
Leetcode 1861. Rotating the Box
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,先遍历每一行,将对应的石头移到空白位置,然后再进行行列的90度翻转。遍历每一行时,应该从右向左,寻找每一个石头,即首先应该移动最右边的石头,k用来表示空白位置的索引,k = -1时表示不存在空白位置,当碰到空白位置时,如果此时空白位置k = -1,则将当前位置的索引赋给k,k != -1时,此时原创 2021-08-18 16:39:29 · 188 阅读 · 0 评论 -
Leetcode 905. Sort Array By Parity
文章作者:Tyan博客:noahsnail.com | CSDN | 简书1. Description2. Solution**解析:**Version 1,使用前后双指针,每次左边的奇数都跟右边的偶数对换位置。Version 1class Solution: def sortArrayByParity(self, nums: List[int]) -> List[int]: i = 0 j =原创 2021-08-18 16:38:44 · 262 阅读 · 0 评论