数组
刷过的【数组】类型题目合集
Moshi_egg
这个作者很懒,什么都没留下…
展开
-
【数组】16:螺旋矩阵Ⅱ
文章目录我的思路 Leetcode 59: 螺旋矩阵Ⅱ(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的思路 这道题和之前做过的螺旋矩阵思路很是类似,只不过之前是按顺时针顺序自外而内依次将矩阵元素存入列表,这次是将列表元素依次放到矩阵对应位置。 具体代码如下: class Solution: def generateMatrix(self, n: int) -> List[List[int]]:原创 2022-01-29 17:51:50 · 420 阅读 · 0 评论 -
【数组】15:轮转数组
文章目录我的思路 Leetcode 189: 轮转数组(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的思路 python内置的列表操作函数真的很方便,所以我的想法也就很直观: 假设数组大小为n,当所需要移动的位数 k <= n 时,即新数组的前k位等于原数组的最后k位,剩下的部分同理。 具体的如图所示: 如果k > n,则取 k = k % n,使得k <= n,然后执行上面的过程。 代码原创 2022-01-29 16:53:17 · 966 阅读 · 0 评论 -
【数组】14:长度最小的子数组
文章目录双指针滑动窗口 Leetcode 209: 长度最小的子数组(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 双指针滑动窗口 以下思路来源于leetcode题解里的大佬林深时见鹿 1、思路 (双指针) O(n)O(n) 给定一个含有 n 个正整数的数组和一个正整数 target ,让我们找出该数组中满足其和 ≥ target 的长度最小的 连续子数组。 样例: 如样例所示,target = 7, nums =转载 2022-01-26 15:42:28 · 68 阅读 · 0 评论 -
【数组】13:有序数组的平方
文章目录我的想法大佬思路 Leetcode 977: 有序数组的平方(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的想法 本小菜鸡的想法向来是直观暴力但是不够简洁巧妙(手动扶额.jpg),所以直接采用python内部的列表生成式生成一个由列表中每个数的平方组成的新数组,再采用python列表内置的排序函数sort()即可。 代码为: class Solution: def sortedSquares(s原创 2022-01-26 11:40:42 · 986 阅读 · 0 评论 -
【数组】12:删除有序数组中的重复项
文章目录leetcode双指针求解 Leetcode 34: 删除有序数组中的重复项(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 leetcode双指针求解 解题思路: 解法: 双指针 首先注意数组是有序的,那么重复的元素一定会相邻。 要求删除重复元素,实际上就是将不重复的元素移到数组的左侧。 考虑用 2 个指针,一个在前记作 p,一个在后记作 q,算法流程如下: 1.比较 p 和 q 位置的元素是否相等。 如果转载 2022-01-24 12:58:09 · 76 阅读 · 0 评论 -
【数组】11:移除元素
文章目录我的思路大佬思路:双指针 Leetcode 27: 移除元素(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的思路 由于题目要求原地移除元素,所以我们不能使用额外的辅助空间。因此,我们可以很直观地想到将所有值等于val的元素依次移到数组尾部。 具体的执行思路为:用一个变量count记录当前找到的值等于val的元素的个数,用n-count记录元素被挪到数组尾部的位置,如果当前尾部元素的值也为val,则将co原创 2022-01-24 12:29:58 · 205 阅读 · 0 评论 -
【数组】10:x的平方根
文章目录我的思路 Leetcode 69: x的平方根(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的思路 由于题目规定不能使用内置函数,所以这里采用二分搜索的方法求解最后的算术平方根。 具体思路为:在0~x的范围内设置low与high,求出mid值。通过比较mid的平方与x的大小来决定low与high的变化。若mid的平方小于x且mid+1的平方大于x,则说明mid是最后平方根的取整值,如果mid+1的平方也原创 2022-01-23 17:56:28 · 461 阅读 · 0 评论 -
【数组】9:搜索插入位置
文章目录我的解法大佬思路二分搜索 Leetcode 35: 搜索插入位置(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的解法 我的思路就是,首先判断target在不在nums数组中,如果在的话,直接使用index函数返回其索引,否则遍历数组,找到数组中第一个比target大的数的索引并返回。 代码如下: class Solution: def searchInsert(self, nums: List[原创 2022-01-23 17:33:51 · 3980 阅读 · 0 评论 -
【数组】8:在排序数组中查找元素的第一个和最后一个位置
文章目录我的思路 Leetcode 34: 在排序数组中查找元素的第一个和最后一个位置(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的思路 刚刚学会的计数器派上用场了,这一题我的思路是:先使用计数器Counter求出数组中每个数出现的次数,然后使用index()函数求出target第一次出现的索引值,得到左侧索引;将该索引值加上该数出现的次数再减一即得右侧索引。 代码如下: class Solution:原创 2022-01-23 17:11:05 · 233 阅读 · 0 评论 -
【数组】7:二分查找
文章目录我的思路 Leetcode 704: 二分查找(python) 注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的思路 其实这道题还比较常规,因为是有序数组,直接使用二分查找即可得到所求数值索引。 我的代码如下: class Solution: def search(self, nums: List[int], target: int) -> int: low, high = 0, len(n原创 2022-01-23 16:38:50 · 259 阅读 · 0 评论 -
【数组】6:有效的字母异位词
Leetcode 242: 有效的字母异位词(python) 注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 字典模拟哈希表 创建两个字典,分别用于存储两个字符串中每个字符出现的次数,最后对两个字典的键和值依次进行比较。 class Solution: def isAnagram(self, s: str, t: str) -> bool: dic1 = {} dic2 = {}原创 2022-01-23 13:48:39 · 326 阅读 · 0 评论 -
【数组】5:两数之和
文章目录暴力求解字典模拟哈希表求解 Leetcode 1: 两数之和(python) 注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 暴力求解 暴力求解最直观,即通过多次循环遍历寻找符合条件的数值对,但是它的耗时比较长,不是特别推荐。 def twoSum(self, nums: List[int], target: int) -> List[int]: n = len(nums) for i原创 2022-01-23 13:23:54 · 449 阅读 · 0 评论 -
【数组】4:盛最多水的容器
Leetcode 11: 盛最多水的容器 注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 大佬思路 我想了很久,没有想出思路,于是参考了leetcode上大佬Krahets的题解,双指针思想太妙了! 以下内容均转载自leetcode的题解。 大佬思路如下: 设两指针 ii , jj ,指向的水槽板高度分别为 h[i]h[i] , h[j]h[j] ,此状态下水槽面积为 S(i, j)S(i,j) 。由于可容纳水的高度由两板中的 短板转载 2022-01-22 22:23:29 · 63 阅读 · 0 评论 -
【数组】3:四数相加Ⅱ
文章目录我的思路leetcode官方题解 Leetcode 454: 四数相加Ⅱ (python) 注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 我的思路 额,本小菜鸡最直接的思路是采用最简单的四层for循环,但是尝试后发现,这种方法在输入数组较大时会超出时间限制。 于是我尝试将四个数组分成两组,采用一个字典记录前两个数组中每一种数值组合出现的次数,如{1:3, 2:4},这个字典说明前两个数组中,使得两数之和为1的组合有3种,使原创 2022-01-22 20:21:10 · 419 阅读 · 0 评论 -
【数组】2:螺旋矩阵
文章目录题目要求我的思路其它大佬的思路 Leetcode 54题:螺旋矩阵(Python) 注:本人文章中内容中来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。 题目要求 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 我的思路 我采取了一种特别简单的思路,既然是螺旋式原创 2022-01-22 15:04:24 · 268 阅读 · 0 评论 -
【数组】1:除自身以外数组的乘积
文章目录错误思路记录参考思路 Leetcode 238题:除自身以外数组的乘积 (python) 错误思路记录 我一开始的想法十分简单,既然要求数组乘积和,那么直接使用python内置的reduce()函数就可以了。 刷题菜鸡完全没有想到要使用算法,于是写出了如下代码: from functools import reduce nums = list(map(int, input().lstrip('[').rstrip(']').split(','))) results = [None] * len(nu原创 2022-01-21 19:03:14 · 268 阅读 · 0 评论