
数组
leetcode数组
Onebear599
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题日记-数组-面试题 16.15. 珠玑妙算
题目描述题目链接:https://leetcode-cn.com/problems/master-mind-lcci/解题思路关键:全部可能的命中次数 - 正确命中次数 = 伪命中次数**全部可能的命中次数 :**若某个字母在两者中都出现过,那么取两者中该字母的频数的较小值,即为该字母可能的命中次数,最后求和得总的可能命中次数。或者说“完美的”,“理想的”命中次数。**正确命中次数:**某字母在两者中都出现过,并且位置相同,则该字母的命中次数。求和得所有命中个数AC代码,看注释:熟练掌握Co原创 2020-09-22 22:01:17 · 176 阅读 · 0 评论 -
LeetCode刷题日记-数组-1128. 等价多米诺骨牌对的数量
题目描述题目链接:https://leetcode-cn.com/problems/number-of-equivalent-domino-pairs/解题思路根据1 <= dominoes[i][j] <= 9,每一对符合条件的数组,例如[1,2]和[2,1],他们进行排序sorted之后,我们可以发现他们可以组成一个两位数12,而其他数组是不可能组成12的,也就是说任意一对符合条件的数组所组成的两位数是独一无二的。既然如此就可以开一个大小为100的数组visit,用来记录该两位数被组原创 2020-09-22 21:09:52 · 148 阅读 · 0 评论 -
LeetCode刷题日记-数组-167. 两数之和 II - 输入有序数组
题目描述题目链接:https://leetcode-cn.com/problems/decompress-run-length-encoded-list/解题思路双指针AC代码如下:class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: # 索引从1开始,不妨首位补零 numbers = [0] + numbers # 定义双指针原创 2020-09-19 21:18:52 · 149 阅读 · 0 评论 -
LeetCode刷题日记-数组-1313. 解压缩编码列表
题目描述题目链接:https://leetcode-cn.com/problems/decompress-run-length-encoded-list/解题思路很简单,累加嘛。AC代码如下:class Solution: def decompressRLElist(self, nums: List[int]) -> List[int]: ans = [] for i in range(0,len(nums),2): ans原创 2020-09-19 21:06:06 · 164 阅读 · 0 评论 -
LeetCode刷题日记-数组-922. 按奇偶排序数组 II
922. 按奇偶排序数组 II题目链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii/解题思路建立一个新的数组ans并为其设定两个指针k,j分别是其偶数和奇数项索引,对A中的每个元素进行判定,如果是偶数则存入索引为k的位置,如果是奇数则存入索引为j的位置。AC代码如下:class Solution: def sortArrayByParityII(self, A: List[int]) -> List[int]:原创 2020-09-19 21:02:29 · 169 阅读 · 0 评论 -
LeetCode刷题日记-数组-1232. 缀点成线
题目描述题目链接:https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/解题思路因此,记录第一次不相等和最后一次不相等的索引差值再加上1,即是发生变化的连续段的长度。解题代码如下:class Solution: def findUnsortedSubarray(self, nums: List[int]) -> int: # 记录第一次不相等和最后一次不相等的索引差值再加上1,原创 2020-09-19 00:08:38 · 89 阅读 · 0 评论 -
LeetCode刷题日记-数组- 1539. 第 k 个缺失的正整数
题目描述题目链接:https://leetcode-cn.com/problems/kth-missing-positive-number/解题思路枚举暴力吧 = = ,脑子转不过来在这里插入代码片原创 2020-09-18 13:00:41 · 197 阅读 · 0 评论 -
LeetCode刷题日记-数组- 剑指 Offer 04. 二维数组中的查找
题目描述题目链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/解题思路将矩阵展开成一维数组,用in判断即可。class Solution: def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool: alist = [i for j in matrix for i in j]原创 2020-09-16 21:39:30 · 189 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 747. 至少是其他数字两倍的最大数
题目描述题目链接:https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others/解题思路首先max函数取出最大值,然后利用all判断是否大于等于其他元素的两倍,如果是,使用index返回最大值的索引即可。解题代码如下:class Solution: def dominantIndex(self, nums: List[int]) -> int: maxnum = max(nums)原创 2020-09-16 19:28:41 · 117 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 1260. 二维网格迁移
题目描述题目链接:https://leetcode-cn.com/problems/shift-2d-grid/原创 2020-09-15 17:16:26 · 152 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 1160. 拼写单词
题目描述题目链接:https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters/解题思路只要words中的某个单词word中的每个字母的数量小于等于chars中对应字母的数量,那么chars中的字母便可以组成该单词。可以建立一个字典d来记录chars中每个字母的数量,用到count后置方法。此后,遍历每个单词中的每个字母就行,统计过程中利用set来避免重复统计。解题代码如下:class Solutio原创 2020-09-15 15:25:43 · 131 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 1331. 数组序号转换
题目描述题目链接:https://leetcode-cn.com/problems/rank-transform-of-an-array/简而言之,返回每个数在该列表中的排名解题思路主要思想就是建立一个字典adict,key:value = 数字:排名,肯定要用到sorted函数,这样对排序好的数字从小至大存入字典中。 解题代码如下:class Solution: def arrayRankTransform(self, arr: List[int]) -> List[int]:原创 2020-09-15 00:05:26 · 158 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 1534. 统计好三元组
题目描述题目链接:https://leetcode-cn.com/problems/count-good-triplets/解题思路暴力求解class Solution: def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int: length = len(arr) ans = 0 for i in range(length-2):原创 2020-09-14 20:12:51 · 155 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 88. 合并两个有序数组
题目描述题目链接:https://leetcode-cn.com/problems/merge-sorted-array/解题思路:less is more!值得注意的是,nums1 = sorted(nums1)在IDE中是跑得通的,但是不知道为何在Leetcode需要写成nums1[:] = sorted(nums1),也恳求大佬们解答疑惑!class Solution: def merge(self, nums1: List[int], m: int, nums2: List[i原创 2020-09-12 11:31:15 · 181 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 1275. 找出井字棋的获胜者
题目描述题目链接:https://leetcode-cn.com/problems/find-winner-on-a-tic-tac-toe-game/解题思路看到这道题,想起了昨天做的LeetCode刷题日记-数组-面试题 840. 矩阵中的幻方个人认为相同之处”在于 列出3*3 矩阵中的所有元素a1,b1,c1,a2,b2,c3,a3,b3,c3,与之不同i的是,该题不是求和而是判断是否存在连续的XXX和000,而Python是可以直接用+进行字符串拼接,因此本质上还是可以看作是求和原创 2020-09-12 10:49:07 · 200 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 840. 矩阵中的幻方
题目描述题目链接:https://leetcode-cn.com/problems/magic-squares-in-grid/解题思路暴力求解,遍历矩阵中的元素,每遍历一个元素grid[i][j]即可确定它的八邻域内的元素,如下图所示:因此行遍历范围为(1, rows-1),列遍历范围为(1, cols-1)。每一个3*3的矩阵的中九个元素分别为a1 a2 a3 b1 b2 b3 c1 c2 c3分别计算每一行的和row1, row2, row3,每一列的和col1, col2, col3,原创 2020-09-12 00:11:39 · 185 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 832. 翻转图像
题目描述题目链接:https://leetcode-cn.com/problems/flipping-an-image/解题思路列表反转可以用[::-1],0/1的相互转换可以用与1进行异或。例如 0 ^ 1= 1, 1 ^ 1=0刚开始想到了两次for循环遍历,代码如下: for x in A: x = x[::-1] # 先翻转 for y in x: # 然后与1进行异或,0/1转换 y ^= 1 retu原创 2020-09-11 13:14:39 · 193 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 605. 种花问题
题目描述题目链接:https://leetcode-cn.com/problems/can-place-flowers/解题思路看到这题,第一时间想到连续三个元素都是为零的话,就可以在中间位置种上种上一棵花。但是考虑到了边界问题,比如[0 0 0],如果按照上面的思路,种的结果结束[0 1 0 ]。而实际上可以种两颗[1 0 1]。上面的思想出发点没错,但有一个重要的缺点就是:遍历过程中,边界元素没有作为中间元素,看了看评论区,网友们的确实聪明绝顶!边界填充0的话,这样遍历过程每个元素都可以作为中原创 2020-09-10 23:40:14 · 173 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 1535. 找出数组游戏的赢家
题目描述题目链接:https://leetcode-cn.com/problems/contains-duplicate-ii/submissions/解题思路首先可以建立一个字典,idx[key]=value,其中key代表是某个元素的值,value就代表某个元素上一次出现的索引。设定一个中间变量mink来记录相邻两个元素间的索引差,重复元素之间差的最小值肯定是相邻两个相同元素,因此只需要遍历一次即可,字典记录一下上一此该元素出现的索引。遍历列表,如果该元素出现过(字典有记录),用key in原创 2020-09-10 23:17:19 · 117 阅读 · 0 评论 -
leetCode刷题日记-数组-面试题 1535. 找出数组游戏的赢家
题目描述题目链接:https://leetcode-cn.com/problems/find-the-winner-of-an-array-game/解题思路我们先不考虑k值的情况,以示例1arr = [2,1,3,5,4,6,7],画出每个回合列表的变化情况如下:第一回合:2和1比较,原始列表(绿色背景)中1紧跟2,2胜第二回合:原始列表中3紧跟1,3和当前赢家2比较, 3胜,3当前赢家家第三回合:原始列表中5紧跟3,5和当前赢家3比较, 5胜,5当前赢家第四回合:原始列表中4紧跟5,原创 2020-09-09 20:40:56 · 176 阅读 · 0 评论 -
leetCode刷题日记-数组-面试题 1550. 存在连续三个奇数的数组
题目描述题目链接:https://leetcode-cn.com/problems/three-consecutive-odds/解题思路直接遍历就完事了class Solution: def threeConsecutiveOdds(self, arr: List[int]) -> bool: for i in range(len(arr)-2): if(arr[i]%2==1 and arr[i+1]%2==1 and arr[i+2]%2原创 2020-09-09 18:00:10 · 98 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 628. 三个数的最大乘积
题目描述题目链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers/解题思路、毫无疑问,肯定先对List进行排序,直接用sorted即可,之后List就是按升序排序后的列表。接下来考虑以下三种情况:列表中全为正数,此时最大乘积等于最大的三个正数相乘,即List[-1]*List[-2]*List[-3](从列表尾部开始数三个数如[1, 2, 3, 4]取2 * 3 * 4列表中全为负数,此时最大乘积等于最大的三原创 2020-09-09 17:51:30 · 179 阅读 · 0 评论 -
LeetCode刷题日记-数组-面试题 17.10. 主要元素
题目描述题目链接:https://leetcode-cn.com/problems/find-majority-element-lcci/解题思路第一时间想到了count函数,Python中的count方法使用示例如下:>> a = [1,2,5,9,5,9,5,5,5]>> a.count(1)>1>a.count(2)>1>a.count(5)>5字符串也支持count方法>>a = "asdasfsak"&g原创 2020-09-08 17:39:17 · 166 阅读 · 0 评论 -
LeetCode刷题日记-数组-977. 有序数组的平方
题目描述题目链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array/解题思路很简单,列表推导式求每个元素的平方再sorted就AC了class Solution: def sortedSquares(self, A: List[int]) -> List[int]: return sorted([i*i for i in A])...原创 2020-09-08 17:26:16 · 177 阅读 · 0 评论 -
LeetCode刷题日记-数组-867. 转置矩阵
题目描述解题思路思路一 numpy最开始首先想到numpy工具包,因为可以直接使用转置函数import numpy as npclass Solution: def transpose(self, A: List[List[int]]) -> List[List[int]]: return np.transpose(A).tolist()调用工具包毫无疑问很简便,但是可能会牺牲时间还有空间,不过less is more嘛思路二 行遍历+列遍历思路三 zi原创 2020-09-07 21:30:21 · 188 阅读 · 0 评论 -
LeetCode刷题日记-数组-1431. 拥有最多糖果的孩子
题目描述解题思路遍历数组中的每个值candy,判断它加上extraCandies之后是否大于等于数组中的最大值。即candy + extraCandies >= max(candies)使用列表推导式,代码如下:class Solution: def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]: return [ candy + extraCandie原创 2020-09-07 20:40:00 · 122 阅读 · 0 评论 -
LeetCode刷题日记-数组-1480. 一维数组的动态和
题目描述解题思路拿到题目就想到用sum函数,假设当前索引为i,那么值为sum(nums[:i+1])所写的代码如下:class Solution: def runningSum(self, nums: List[int]) -> List[int]: results = [] for i in range(len(nums)): results.append(sum(nums[:i+1])) retu原创 2020-09-07 20:26:00 · 206 阅读 · 0 评论 -
LeetCode刷题日记-数组-1476. 子矩形查询
题目描述题目链接:https://leetcode-cn.com/problems/subrectangle-queries/题解# 暴力解法class SubrectangleQueries: def __init__(self, rectangle: List[List[int]]): self.rectangle = rectangle def updateSubrectangle(self, row1: int, col1: int, row2: i原创 2020-09-07 17:58:27 · 141 阅读 · 0 评论