![](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 · 115 阅读 · 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 · 127 阅读 · 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 · 124 阅读 · 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 · 143 阅读 · 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 · 77 阅读 · 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 · 151 阅读 · 0 评论 -
leetcode 509. 斐波那契数
斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0, F(1) = 1 F(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 · 36 阅读 · 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 · 114 阅读 · 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 · 69 阅读 · 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 · 177 阅读 · 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 · 79 阅读 · 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 · 141 阅读 · 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 · 370 阅读 · 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 · 1128 阅读 · 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 · 498 阅读 · 0 评论