随笔分类 -  Leetcode-数组

上一页 1 2 3 4 下一页
Leetcode练习(Python):数组类:第88题:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。   说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
摘要:题目: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 num 阅读全文
posted @ 2020-04-23 16:38 桌子哥 阅读(582) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第81题:假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。
摘要:题目: 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。 编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。 进阶: 这是 搜索旋转排序数组 的延伸题目,本 阅读全文
posted @ 2020-04-23 16:16 桌子哥 阅读(348) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第80题:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
摘要:题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 思路: 思路较简单 程序: class Solution: def removeDuplicate 阅读全文
posted @ 2020-04-23 15:46 桌子哥 阅读(575) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第79题:给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
摘要:题目: 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 思路: 深度优先和回溯法结合 程序1: class Solution(object): d 阅读全文
posted @ 2020-04-23 15:03 桌子哥 阅读(1877) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第78题:给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。
摘要:题目: 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 思路: 思路较简单,迭代法。 程序: class Solution: def subsets(self, nums: List[int]) -> List[List[int]]: l 阅读全文
posted @ 2020-04-23 12:33 桌子哥 阅读(966) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第75题:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。
摘要:题目:第75题:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。 思路: 思路较简单,提示了进阶思路 阅读全文
posted @ 2020-04-23 11:26 桌子哥 阅读(964) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第74题:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。
摘要:题目: 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 思路: 对行进行二分 程序: class Solution: def searchMatrix(self, matrix: L 阅读全文
posted @ 2020-04-22 16:24 桌子哥 阅读(665) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第73题:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。
摘要:题目: 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 思路: 进阶: 一个直接的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出 阅读全文
posted @ 2020-04-22 15:33 桌子哥 阅读(891) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第64题:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。
摘要:题目: 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 思路: 本题较简单。 程序: class Solution: def minPathSum(self, grid: List[List[int]]) 阅读全文
posted @ 2020-04-22 14:22 桌子哥 阅读(1359) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第63题:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
摘要:题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 思路: 和没有障碍思路类似,将有 阅读全文
posted @ 2020-04-22 13:27 桌子哥 阅读(1576) 评论(0) 推荐(0)
Leetcode练习(Python) :数组类:第62题:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径?
摘要:题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 思路: 找每个位置最多的可能的情况。 与华为面试第一轮的题目类似。 程序: 阅读全文
posted @ 2020-04-22 12:27 桌子哥 阅读(1934) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第120题:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。
摘要:题目: 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。说明: 如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。 思路: 要从下到上进行设计,从上到下进行设计会有错误。 程序: class Solution: def 阅读全文
posted @ 2020-04-22 11:59 桌子哥 阅读(590) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第119题:给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。
摘要:题目: 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 思路: 思路简单,稍后看看题目的进阶做法,然后做相应的增加。 程序1:(空间复杂度为O(k^2)) class Solution: def getRow(self, rowIndex: int) -> List[int]: 阅读全文
posted @ 2020-04-21 18:20 桌子哥 阅读(531) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第118题:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
摘要:题目: 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 思路:本题较简单 程序: class Solution: def generate(self, numRows: int) -> List[List[int]]: result = [] if numRows <= 0 阅读全文
posted @ 2020-04-21 18:12 桌子哥 阅读(680) 评论(0) 推荐(0)
Leetcode练习(Python):第66题:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。
摘要:题目: 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 思路:考虑进位的情况就可以了,较简单 程序: class Solution: def plusOne(sel 阅读全文
posted @ 2020-04-21 16:09 桌子哥 阅读(1910) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第123题:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成&#160;两笔&#160;交易。 注意:&#160;你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
摘要:题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 思路:自己的思路是每逢可以交易的条件就进行交易,没有考虑全局。结果一直不对,参考网 阅读全文
posted @ 2020-04-21 15:31 桌子哥 阅读(2355) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第122题:给定一个数组,它的第&#160;i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
摘要:题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 思路: 动态规划 在某教育科技公司面试时做过,笔试两轮结束后,问 阅读全文
posted @ 2020-04-21 12:48 桌子哥 阅读(1644) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第121题:给定一个数组,它的第&#160;i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。
摘要:题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 思路:动态规划(最佳),还可以用暴力 在某教育科技公司面试时遇到过。 程序1:动态规划 cl 阅读全文
posted @ 2020-04-21 11:04 桌子哥 阅读(1356) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第57题:给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
摘要:题目: 给出一个无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 思路:开始使用纯逻辑的思路,使用了大量的判断,如程序2所示,可以通过题目的两个例子,但是在自创例子时出现了超时的提示(要把复杂的问题简单化 阅读全文
posted @ 2020-04-20 20:47 桌子哥 阅读(503) 评论(0) 推荐(0)
Leetcode练习(Python):数组类:第59题:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
摘要:题目: 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 思路: 是第54题的逆向过程 程序: class Solution: def generateMatrix(self, n: int) -> List[List[int]]: if n <=  阅读全文
posted @ 2020-04-20 16:30 桌子哥 阅读(942) 评论(0) 推荐(0)

上一页 1 2 3 4 下一页