Leetcode解题报告
Rileyang
这个作者很懒,什么都没留下…
展开
-
leetcode#209. 长度最小的子数组(中等)
题目描述给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。题目地址:https://leetcode-cn.com/problems/minimum-size-subarray-sum方法:双指针/滑动窗口第一种是每个循环计算窗口内元素之和,根据和与s的大小关系改变窗口大小。耗时久class Solution: def minSubArrayLen(self, s: int,原创 2020-05-24 15:35:44 · 151 阅读 · 0 评论 -
leetcode#485. 最大连续1的个数
题目描述给定一个二进制数组, 计算其中最大连续1的个数。方法一:设置计数每遇到1,计数家一,遇到0计数置零,更新结果为最大的计数。class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: ans, count = 0, 0 for i in range(len(nums)): if nums[i] == 1:原创 2020-05-24 14:07:35 · 215 阅读 · 0 评论 -
leetcode#136.只出现一次的数字
题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?要点分析不考虑额外空间限制的条件可以有三种解法:遍历数组,用HashMap记录每个元素出现的次数;遍历HAshMap找出只出现了一次的那个。利用集合去重,因为每个其他元素都出现两次,则对集合求和*2 - 数组求和 = 出现一次的元素。遍历数组,用另一个集合记录元素,当集合中已存在该元素时删去,最后剩下的即为所求元原创 2020-05-23 14:02:20 · 154 阅读 · 0 评论 -
leetcode#118. 杨辉三角
题目描述给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。题目地址:https://leetcode-cn.com/problems/pascals-triangle/要点分析每一行的头和尾元素均初始化为1;中间元素由上层[i-1][j-1]+[i-1][j]构成;运用动态规划思想通过前层生成后层,构造一个ans=[ ]用来存储结果,每一层的结果append到ans中,numRows=0时不执行循环直接返回ans=[ ];每行的长度可以预先确定。class So原创 2020-05-22 22:58:33 · 152 阅读 · 0 评论 -
leetcode#54. 螺旋矩阵(中等)
题目描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。题目地址:https://leetcode-cn.com/problems/spiral-matrix/要点分析需要转变方向右两种情况,一是下一步超越矩阵边界,二是下一步到达已遍历的元素,排除掉这两种情况即可;转变方向可以通过实现方向数组,对已遍历的的元素进行标记;class Solution: def spiralOrder(self, matrix: List[Lis原创 2020-05-22 21:16:55 · 203 阅读 · 0 评论 -
leetcode498. 对角线遍历(中等)
给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。说明:给定矩阵中的元素总数不会超过 100000 。题目链接:https://leetcode-cn.com/problems/diagonal-traverse/方法一找对角线的规律,以自右上向左下的对角为例,元素坐标逐个[i+1][j-1];对角线方向互相交替,统一按照统一方向提取,奇数组并入结果前先进行翻转。代码实现:外层循环遍历所有对角线内层循环根原创 2020-05-22 19:33:07 · 239 阅读 · 0 评论 -
leetcode#66. 加一
题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。方法一:按照数组倒序,若当前位+1小于九,直接返回当前数组;大于9则当前位置零,判断高一位的情况。class Solution: def plusOne(self, digits: List[int]) -> List[int]: # 倒序向数组元素+1 # for原创 2020-05-22 15:57:13 · 86 阅读 · 0 评论 -
leetcode#747. 至少是其他数字两倍的最大数
题目描述在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。提示:nums 的长度范围在[1, 50].每个 nums[i] 的整数范围在 [0, 100].题目地址:https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others/方法一:参考文档Created with Raphaël 2.2.0输入数原创 2020-05-22 15:15:00 · 123 阅读 · 0 评论 -
leetcode#724. 寻找数组的中心索引
题目描述给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。注意:nums 的长度范围为 [0, 10000]。任何一个 nums[i] 将会是一个范围在 [-1000, 1000]的整数。要点分析左侧和右侧元素相加时,均不包括中心索引的元素;要擅于利用数学关系:原创 2020-05-22 14:10:53 · 122 阅读 · 0 评论 -
leetcode#999. 可以被一步捕获的棋子数
题目描述解法一题目描述一大串乍一看十分唬人,其实就是棋盘内一个车(R)有上下左右四个可移动方向,对每个方向的卒(p)进行捕获,但在遇到象(B)或到达棋盘边缘时终止该方向的移动,求四个方向一共可以捕获到几个卒。class Solution: def numRookCaptures(self, board: List[List[str]]) -> int: # 找...原创 2020-03-27 17:37:19 · 144 阅读 · 0 评论 -
leetcoede#836. 矩形重叠
题目描述法一:判断不重叠的情况class Solution: def isRectangleOverlap(self, rec1: List[int], rec2: List[int]) -> bool: x1_1,y1_1,x1_2,y1_2 = rec1 x2_1,y2_1,x2_2,y2_2 = rec2 if x2_2&l...原创 2020-03-18 16:32:05 · 118 阅读 · 0 评论 -
leetcode#1160. 拼写单词
题目描述分别统计单词中各个字母的次数class Solution: def countCharacters(self, words: List[str], chars: str) -> int: chars_1 = list(chars[:]) chars_1.set() # chars去重 dic_char={} ...原创 2020-03-17 23:16:38 · 93 阅读 · 0 评论 -
leetcode#169. 多数元素
题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。解法一:count()函数class Solution: def majorityElement(self, nums: List[int]) -> int: n = len(nums)/2...原创 2020-03-13 17:08:21 · 92 阅读 · 0 评论 -
leetcode#1071. 字符串的最大公因子
题目描述观察最大公因数的性质若两个字符串前后拼接相等时,表示他们分别由若干个公因子拼接而成,否则不成立。且有,最大公因子长度等于两个字符串长度的最大公因数。证明可见官方题解:官方题解class Solution: def gcdOfStrings(self, str1: str, str2: str) -> str: # 判断无解 if st...原创 2020-03-12 12:23:48 · 101 阅读 · 0 评论 -
leetcode#1013. 将数组分成和相等的三个部分
题目描述解法:双指针+一点技巧class Solution: def canThreePartsEqualSum(self, A: List[int]) -> bool: sum = 0 if A == []: return 0 for a in A: sum += a ...原创 2020-03-11 13:24:37 · 132 阅读 · 0 评论 -
leetcode#543. 二叉树的直径
题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。递归max(左子树直径, 右子树直径, 左子树+右子树)# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = ...原创 2020-03-10 22:39:10 · 83 阅读 · 0 评论 -
leetcode#121. 买卖股票的最佳时机
题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。解:动态规划class Solution: def maxProfit(self, prices: List[int]) -> int: if prices==...原创 2020-03-09 22:16:46 · 88 阅读 · 0 评论 -
leetcode#322. 零钱兑换(中等)
题目描述零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。解一:动态规划class Solution: def coinChange(self, coins: List[int], amount: int) -> int: # 动态规...原创 2020-03-08 19:06:55 · 97 阅读 · 0 评论 -
leetcode #1103 分糖果 II
题目描述题解暴力求解:遍历数组遍历数组分糖果,直到糖果全部分完,注意处理最后一轮糖果不够的分配。class Solution: def distributeCandies(self, candies: int, num_people: int) -> List[int]: n = num_people ans = [0]*n # 初始...原创 2020-03-05 23:07:03 · 141 阅读 · 0 评论 -
leetcode#994 腐烂的橘子
题目描述在给定的网格中,每个单元格可以有以下三个值之一:值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1。题解广度优先遍历(BFS),初始状态的烂橘子当作根节点,依次处理每一个根节点邻居的新鲜橘子,使其腐烂并记为...原创 2020-03-05 14:25:26 · 114 阅读 · 0 评论 -
合并排序的数组
题目描述给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化 A 和 B 的元素数量分别为 m 和 n。直接调用python函数class Solution: def merge(self, A: List[int], m: int, B: List[int], n: int) -> None: ...原创 2020-03-03 23:36:16 · 85 阅读 · 0 评论 -
leetcode 13# 罗马数字转整数(Python)
CONTENT题目分析Summary题目https://leetcode-cn.com/problems/roman-to-integer/description/分析题目看起来很长,但罗马计数的规则其实很简单,除了特殊表示的六个数,一般都由基础字符逐个相加即可,可以联想货币理解。所以首先将特殊情况“翻译”常规表达形式,再统一处理。code 40msclass Solution: ...原创 2019-09-20 22:26:10 · 81 阅读 · 0 评论 -
leetcode 9# 回文数(python)
CONTENT题目分析思路1思路2Summary题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。https://leetcode-cn.com/problems/palindrome-number/description/进阶:你能不将整数转为字符串来解决这个问题吗?分析思路1首先排除负数情况对正数:整数转成字符串,翻转字符串,判断是否...原创 2019-09-19 21:50:32 · 99 阅读 · 0 评论 -
Leetcode 190# Reverse Bits (Python)
CONTENTProblemNoteidea#1 字符串翻转idea#2 位移法SummaryProblemReverse bits of a given 32 bits unsigned integer.Follow up:If this function is called many times, how would you optimize it?Noteidea#1 字符串翻转...原创 2019-08-29 16:17:05 · 166 阅读 · 0 评论 -
leetcode 1# 两数之和(python)
CONTENT题目注意点思路Summary题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。https://leetcode-cn.com/problems/two-sum/description/注意点思路Summary关于...原创 2019-09-03 11:44:51 · 79 阅读 · 0 评论 -
Leetcode 7# Reverse Integer (Python)
CONTENTProblemNoteidea#1idea#2SummaryProblemGiven a 32-bit signed integer, reverse digits of an integer.Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120O...原创 2019-08-28 16:04:57 · 89 阅读 · 0 评论