![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数组
文章平均质量分 62
booooo丶
Try harder.
展开
-
1208.尽可能使字符串相等(滑动窗口)
尽可能使字符串相等给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。如果 s 中没有子字符串可以转化成 t 中对应的子字符串,则返回 0。原创 2021-02-05 14:39:58 · 1383 阅读 · 6 评论 -
643.子数组最大平均数 I(滑动窗口)
子数组最大平均数 I给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例:输入:[1,12,-5,-6,50,3], k = 4输出:12.75解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75解题思路由于是关于一个数组中子数组的求和问题,所以可以利用滑动窗口方法来解。(1) 首先,将数组 nums[] 中的前 k 个元素求和得到 sum ,并认为它是当前的最大值。(2) 随后设置一个 left 指针用来指向子数组中的第一个元素。原创 2021-02-05 17:26:10 · 1728 阅读 · 0 评论 -
1423.可获得的最大点数(滑动窗口)
可获得的最大点数几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。示例 1:输入:cardPoints = [1,2,3,4,5,6,1], k = 3输出:12解释:第一次行动,不管拿哪张牌,你的点数总是 1 。但是,先拿最右边的卡牌将会最大化你的可原创 2021-02-06 10:26:16 · 843 阅读 · 1 评论 -
665.非递减数列(贪心思想)
非递减数列给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输入: nums = [4,2,1]输出: false解释: 你不能在只改变原创 2021-02-07 16:31:14 · 152 阅读 · 0 评论 -
1493.删掉一个元素以后全为 1 的最长子数组(滑动窗口)
删掉一个元素以后全为 1 的最长子数组这道题目和1208.尽可能使字符串相等的解法类似,都是利用滑动窗口,找到满足条件的子区间。给你一个二进制数组 nums ,你需要从中删掉一个元素。请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。如果不存在这样的子数组,请返回 0 。提示 1:输入:nums = [1,1,0,1]输出:3解释:删掉位置 2 的数后,[1,1,1] 包含 3 个 1 。示例 2:输入:nums = [0,1,1,1,0,1,1,0,1]输出:原创 2021-02-07 19:00:08 · 171 阅读 · 0 评论 -
978. 最长湍流子数组(滑动窗口)
最长湍流子数组当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组。若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。返回 A原创 2021-02-08 20:43:15 · 90 阅读 · 0 评论 -
992. K 个不同整数的子数组(滑动窗口)
K 个不同整数的子数组给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定不同的子数组为好子数组。(例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)返回 A 中好子数组的数目。示例 1:输入:A = [1,2,1,2,3], K = 2输出:7解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2].示例 2:输入:原创 2021-02-09 23:51:43 · 114 阅读 · 0 评论 -
567. 字符串的排列(滑动窗口)
字符串的排列给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).示例2:输入: s1= “ab” s2 = “eidboaoo”输出: False解题思路由于题中出现了子串,所以可以利用滑动窗口(双指针)来解决问题。但由于是判断 s2 是否包含 s1 的排列,所以要原创 2021-02-10 14:55:27 · 99 阅读 · 0 评论 -
119. 杨辉三角 II
杨辉三角 II给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]解题思路杨辉三角有一个特点,就是说杨辉三角两侧的边上的元素值都是 1,并且在杨辉三角中,每个数是它左上方和右上方的数的和。所以,可以将杨辉三角想象成是一个直角三角形。如下图所示:首先,创建一个二维数组,并将该数组的第一个元素赋值为 1,然后按行遍历(有行数的限制:rowIndex),再将两条边上的元素赋值为 1。原创 2021-02-13 14:47:30 · 201 阅读 · 1 评论 -
448. 找到所有数组中消失的数字
找到所有数组中消失的数字给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]解题思路因为整型数组中的元素的大小都在 [1, n] 之间,所以定义个新数组 newNums 用来记录整型数组中每个元素出现的次数。记录完后,遍历该数组,只需要将 newNums 中值为 0 的元素下标记录下来即得到答原创 2021-02-13 15:13:36 · 68 阅读 · 0 评论 -
485. 最大连续1的个数(一次遍历数组和滑动窗口:双指针)
最大连续1的个数给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.解题思路方法一:一次遍历数组定义一个 maxCount 用来记录当前数组中最大连续 1 的个数。遍历时在没有遇到 0 时 count 值加 1。当遇到0时,先看当前 count 值是否是当前数组中最大连续 1 的个数再令 count = 0,重新开始计数,重复此过程直到数组末尾。最后还要再一次判断 c原创 2021-02-15 01:02:45 · 169 阅读 · 0 评论 -
561. 数组拆分 I(sort排序)
数组拆分 I给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。示例 1:输入:nums = [1,4,3,2]输出:4解释:所有可能的分法(忽略元素顺序)为:(1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3(1, 3), (2, 4) -> min(1原创 2021-02-16 00:43:36 · 591 阅读 · 4 评论 -
566. 重塑矩阵(用一个一维数组存储原矩阵的元素)
重塑矩阵在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解释:行遍原创 2021-02-17 11:25:59 · 2548 阅读 · 9 评论 -
888. 公平的糖果棒交换(哈希表和直接遍历)
公平的糖果棒交换爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。)返回一个整数数组 ans,其中 ans[0] 是爱丽丝必须交换的糖果棒的大小,ans[1] 是 Bob 必须交换的糖果棒的大小。如果有多个答案,你可以返回其中任何一个。保证答案存在。示例 1:输入:A = [1,1], B =原创 2021-02-19 15:33:43 · 169 阅读 · 0 评论 -
697. 数组的度(数组的遍历)
数组的度给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。示例 1:输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2,原创 2021-02-20 11:54:57 · 170 阅读 · 0 评论