![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
�粉红豹护体
这个作者很懒,什么都没留下…
展开
-
leetcode 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解释: 你不能在只改变一.原创 2020-10-29 12:55:51 · 120 阅读 · 0 评论 -
leetcode 643. 子数组最大平均数 I
子数组最大平均数 I给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例 1:输入: [1,12,-5,-6,50,3], k = 4输出: 12.75解释: 最大平均数 (12-5-6+50)/4 = 51/4 = 12.75注意:1 <= k <= n <= 30,000。所给数据范围 [-10,000,10,000]。思路:滑动窗口,第i到第i+k个元素的和等于第i-1到第i-1+k个元素之和减去第i-1个元素再加上第i+k个元素.原创 2020-10-26 12:55:15 · 135 阅读 · 0 评论 -
leetcode 628. 三个数的最大乘积
三个数的最大乘积给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。思路:遍历一次,找出最大,次大,次次大,最小,次小,比较乘积代码:class Solution { public int maximumPro.原创 2020-10-25 21:33:11 · 130 阅读 · 0 评论 -
leetcode 605. 种花问题
种花问题假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: True示例 2:输入: flowerbed = [1,0,0,0,1], n = 2输出: F.原创 2020-10-25 21:31:08 · 150 阅读 · 0 评论 -
leetcode 561. 数组拆分 I
数组拆分 I给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).提示:n 是正整数,范围在 [1, 10000].数组中的元素范围在 [-10000, 10000].思路:要让从1到n的min(ai,bi)总和最大,即.原创 2020-10-25 21:27:36 · 81 阅读 · 0 评论 -
leetcode 566. 重塑矩阵
重塑矩阵在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]解释:.原创 2020-10-23 12:42:27 · 170 阅读 · 0 评论 -
leetcode 509. 斐波那契数
斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定 N,计算 F(N)。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1.示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2..原创 2020-10-22 13:07:29 · 38 阅读 · 0 评论 -
leetcode 485. 最大连续1的个数
最大连续1的个数给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。思路:动态规划,如果第i位为1,则前i位最长的连续1位数 = 前i-1位最长连续1的位数 + 1,如果为0,位数就是0,用一个dp数组来记录最长位数,时间复杂度为O(n),空间复杂度为O(n)代码:class Sol.原创 2020-10-21 13:14:50 · 119 阅读 · 0 评论 -
leetcode 448. 找到所有数组中消失的数字
给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路:用哈希表存储nums中的元素,最后从1开始for循环去遍历哈希表,把哈希表中没出现的数字放到一个数组中,最后返回数组即可,时间复杂度原创 2020-10-21 00:05:09 · 70 阅读 · 0 评论 -
leetcode 268. 丢失的数字
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2原创 2020-10-15 21:14:42 · 179 阅读 · 0 评论 -
leetcode 118.杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]思路:如果只有一行,那么第一行是[1],如果有两行或者两行以上,那么第一行是[1],第二行是[1,1]。之后的每一行的第一个和最后一个元素一定是1,中间的元素可以用一个for循环写出来,设当前元素是第n行的第i个元素,前一行元素用pre来表示,那么for循环中的原创 2020-10-14 13:36:23 · 80 阅读 · 0 评论 -
leetcode-递归翻转单链表
递归翻转单链表题目反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?原题地址/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * };原创 2020-07-06 12:41:26 · 142 阅读 · 0 评论 -
leetcode 48. 旋转图像 (c语言)
旋转图像(右旋)题目来源leetcode 48.旋转图像题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例1给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例2给定 matrix =[ [ 5原创 2020-05-29 16:05:31 · 372 阅读 · 0 评论 -
leetcode 判断数组存在重复元素 (C语言)
判断数组存在重复元素题目给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。思路一开始的思路是先快排,变有序后再进行相邻元素是否相等的判断即可,然后自己写了快排提交后发现执行第最后一个测试用例时超时了,后来换成c语言自带的排序qsort()后通过了。qsort(void* base, size_t num, size_t width, int(__cdecl* compare)(const void*原创 2020-05-26 14:40:09 · 1135 阅读 · 0 评论 -
leetcode 数组循环移动(三次旋转)(C语言)
关于长度为n的数组的循环右(左)移k个位置循环右移k个位置leetcode原题给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [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]示例 2:输入: [-1,-100,3,99] 和 k = 2输出: [3,9原创 2020-05-25 16:03:41 · 503 阅读 · 0 评论