![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣刷题笔记
笔记
sheryood
这个作者很懒,什么都没留下…
展开
-
3.30_189.数组_数组的旋转_旋转数组(middle)
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]原创 2021-03-30 21:17:33 · 125 阅读 · 0 评论 -
3.30_419.数组_二维数组及滚动数组_甲板上的战舰(middle)
给定一个二维的甲板, 请计算其中有多少艘战舰。 战舰用 'X’表示,空位用 '.'表示。 你需要遵守以下规则:给你一个有效的甲板,仅由战舰或者空位组成。战舰只能水平或者垂直放置。换句话说,战舰只能由 1xN (1 行, N 列)组成,或者 Nx1 (N 行, 1 列)组成,其中N可以是任意大小。两艘战舰之间至少有一个水平或垂直的空位分隔 - 即没有相邻的战舰。示例 :X…X…X…X在上面的甲板中有2艘战舰。无效样例 :…XXXXX…X你不会收到这样的无效甲板 - 因为战舰之原创 2021-03-30 09:22:18 · 133 阅读 · 0 评论 -
3.29_598. 数组_二维数组及滚动数组_范围求和 II(easy)
easy题目真是越来越不easy了,,,给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。 - 示例 1: - 输入: m = 3, n = 3 operations = [[.原创 2021-03-29 22:03:11 · 137 阅读 · 0 评论 -
3.28_661.数组_二维数组及滚动数组_图片平滑器(easy)
包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[0, 0, 0],[0, 0, 0],[0, 0, 0]]解释:对于点 (0,0), (0,2), (2,0), (2,2): 平均(3/4) = 平均(0.75) = 0对于点 (0原创 2021-03-29 10:43:03 · 180 阅读 · 0 评论 -
3.28_119.数组_二维数组及滚动数组_杨辉三角二(easy)
给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?答案和118题杨辉三角一样,只是取一下最后一项即可。(未考虑进阶要求)class Solution: def getRow(self, rowIndex: int) -> List[int]: result = [[1]]原创 2021-03-28 20:30:22 · 66 阅读 · 0 评论 -
3.27_118.数组_二维数组及滚动数组_杨辉三角(easy)
评论区大神太强了。。。解题思路:观察一下规律,发现当前一行只比上一行多了一个元素,最最关键的一点:本行元素等于上一行元素往后错一位再和上一行元素自身逐个相加:因此我们只要对最后一行单独处理:最后一行首、尾分别添加一个零然后对应位置求和就可以得到新的一行,思路上比较清晰,占用的时间、空间复杂度也都还挺好class Solution: def generate(self, numRows: int) -> List[List[int]]: if numRows == 0:转载 2021-03-28 20:15:15 · 99 阅读 · 0 评论 -
3.27_283.数组_数组的改变、移动_移动0(easy)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-pla原创 2021-03-27 10:17:57 · 62 阅读 · 0 评论 -
3.27_665.数组_数组的改变、移动_非递减数列(easy)
注意:数列递增递减问题,比如递增,首先想到nums[i] >= nums[i-1]给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:.原创 2021-03-27 09:26:18 · 140 阅读 · 0 评论 -
3.26_453.数组_数组的改变、移动_最小操作次数使数组元素相等(easy)
给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。(评论区看到的,说是深信服笔试题)示例:输入:[1,2,3]输出:3解释:只需要3次操作(注意每次操作会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]class Solution: def minMoves(self, nums: List[int]) -> int原创 2021-03-26 16:24:27 · 357 阅读 · 0 评论 -
3.26_274.数组_统计数组中的元素_H指数(middle)
给定一位研究者论文被引用次数的数组(被引用次数是非负整数)。编写一个方法,计算出研究者的 h 指数。h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)总共有 h 篇论文分别被引用了至少 h 次。且其余的 N - h 篇论文每篇被引用次数 不超过 h 次。例如:某人的 h 指数是 20,这表示他已发表的论文中,每篇被引用了至少 20 次的论文总共有 20 篇。示例:输入:citations = [3,0,6,1,5]输原创 2021-03-26 15:17:41 · 77 阅读 · 0 评论 -
3.25_41.数组_统计数组中的元素_缺失的第一个正数(hard)
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶:你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1提示:0 <= nums.length <= 300-231 <= nums[i] <= 231 - 1class原创 2021-03-25 20:42:30 · 59 阅读 · 0 评论 -
3.25_442.数组_统计数组中的元素_数组中重复的数据(middle)
给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]本题和448实际上是同一道题目,只不过问法不一样,这道题目有三种问法:找只出现一次的数、找出现两次的数和找未出现即缺失的数。本题代码:class Solution: def findDuplicates(s原创 2021-03-25 10:07:40 · 69 阅读 · 0 评论 -
3.24_448. 数组_统计数组中的元素_找到所有数组中消失的数字(easy)
给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]class Solution: def findDisappearedNumbers(self, nums: Lis原创 2021-03-24 21:19:24 · 213 阅读 · 0 评论 -
3.24_697. 数组_统计数组中的元素_数组的度(easy)
dd原创 2021-03-24 17:08:02 · 65 阅读 · 0 评论 -
3.23_645.数组_统计数组中的元素_错误的集合(easy)
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。示例 1:输入:nums = [1,2,2,4]输出:[2,3]示例 2:输入:nums = [1,1]输出:[1,2]提示:2 <= nums.length <= 1041 <原创 2021-03-24 09:06:46 · 91 阅读 · 0 评论 -
3.23_628.数组_数组的遍历_三个数的最大乘积(easy)
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入:nums = [1,2,3]输出:6示例 2:输入:nums = [1,2,3,4]输出:24示例 3:输入:nums = [-1,-2,-3]输出:-6提示:3 <= nums.length <= 104-1000 <= nums[i] <= 1000思路将nums排序 如果全为正数或全为负数,最大三个数的乘积为a 如果存在两个以上负数,两个最小负转载 2021-03-23 21:08:37 · 77 阅读 · 0 评论 -
3.22_485.数组_数组的遍历_最大连续 1 的个数
给定一个二进制数组, 计算其中最大连续 1 的个数。示例:输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.提示:输入的数组只包含 0 和 1 。输入数组的长度是正整数,且不超过 10,000。class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: count = 0 maxcount =原创 2021-03-23 19:22:41 · 72 阅读 · 0 评论 -
3.23_495.数组_数组的遍历_提莫攻击
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。示例1:输入: [1,4], 2输出: 4原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。所以最终输出原创 2021-03-23 19:19:01 · 89 阅读 · 0 评论 -
3.23_414. 数组_数组的遍历_第三大的数
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。示例 1:输入:[3, 2, 1]输出:1解释:第三大的数是 1 。示例 2:输入:[1, 2]输出:2解释:第三大的数不存在, 所以返回最大的数 2 。示例 3:输入:[2, 2, 3, 1]输出:1解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。提示:1 <= nums.length <原创 2021-03-23 19:58:44 · 127 阅读 · 0 评论