首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LeetCode 845. 数组中的最长山脉(中心扩展)

题目 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”: B.length >= 3 存在 0 B[B.length - 1] (注意:B 可以是 A 的任意子数组,包括整个数组 A。) 给出一个整数数组 A,返回最长 “山脉” 的长度。 如果不含有 “山脉” 则返回 0。...示例 1: 输入:[2,1,4,7,3,2,5] 输出:5 解释:最长的 “山脉” 是 [1,4,7,3,2],长度为 5。 示例 2: 输入:[2,2,2] 输出:0 解释:不含 “山脉”。...提示: 0 <= A.length <= 10000 0 <= A[i] <= 10000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-mountain-in-array...解题 找到满足 A[i-1] A[i+1] 的i点,从i向左右扩展到l,r 记录最大长度,i = r跳过已经找过的地方,再重复上述过程 class Solution {

57830
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    leetcode(442)数组中重复的数据

    给定一个长度为n的数组nums,数组nums[1,n]内出现的重复的元素,请你找出所有出现两次的整数,并以数组形式返回,你必须设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题...result; } const res = findDuplicates([4,3,2,7,8,2,3,1]); console.log(res); // [2,3] 首先以上代码块已经实现了寻找数组中的重复数字了...,那么复杂度就O(1); 总结以上时间复杂度,有一层循环就是O(n),如果没有循环,在数组中找值O(1),如果是双层循环那么时间复杂度就是O(n^2); 很显然我们这道题使用的是一层循环,那么复杂度就是...O(n),我们借用了一个arr = new Array(n).fill(0)其实是在n长度的数组中快速拷贝赋值一n个长度的0。...arr[nums[i]]) { arr[nums[i]] = 1; continue; } result.push(nums[i]); 另外在leetcode评论区里也有比较好的解法

    1.4K20

    ​LeetCode刷题实战325:和等于 k 的最长子数组长度

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...今天和大家聊的问题叫做 和等于 k 的最长子数组长度,我们先来看题面: https://leetcode-cn.com/problems/maximum-size-subarray-sum-equals-k...给定一个数组 nums 和一个目标值 k,找到和等于 k 的最长子数组长度。如果不存在任意一个符合要求的子数组,则返回 0。 注意: nums 数组的总和是一定在 32 位有符号整数范围之内的。...示例 示例 1: 输入: nums = [1, -1, 5, -2, 3], k = 3 输出: 4 解释: 子数组 [1, -1, 5, -2] 和等于 3,且长度最长。...示例 2: 输入:nums=[-2, -1, 2, 1],k=1 输出:2 解释:子数组[-1, 2]和等于 1,且长度最长。

    62730

    golang刷leetcode 技巧(76) 乘积为正数的最长子数组长度

    给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度。...示例 2: 输入:nums = [0,1,-2,-3,-4] 输出:3 解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6 。...注意,我们不能把 0 也包括到子数组中,因为这样乘积为 0 ,不是正数。...示例 3: 输入:nums = [-1,-2,-3,0,1] 输出:2 解释:乘积为正数的最长子数组是 [-1,-2] 或者 [-2,-3] 。...2,子问题1:如果含有0,从0的位置截断,取左右两部分的大值 3,子问题2:如果不含0,统计所有负数下标 4,对子问题2,又可以拆分成两个子问题 5,子问题2.1:负数有 偶数个,直接返回长度

    22220

    ​LeetCode刷题实战329:矩阵中的最长递增路径

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...今天和大家聊的问题叫做 矩阵中的最长递增路径,我们先来看题面: https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/...给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。...newRow, newColumn, memo) + 1); } } return memo[row][column]; } } 好了,今天的文章就到这里...,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

    34030

    图解LeetCode第 26 号问题:删除排序数组中的重复项

    该文已加入开源项目:LeetCodeAnimation(用动画的形式呈现解LeetCode题目的思路,目前 4500 Star )。...地址:https://github.com/MisterBooo/LeetCodeAnimation LeetCode上第 26 号问题:删除排序数组中的重复项 题目描述 给定一个排序数组,你需要在原地删除重复出现的元素...示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。...你不需要考虑数组中超出新长度后面的元素。 思路解析 使用快慢指针来记录遍历的坐标。...开始时这两个指针都指向第一个数字 如果两个指针指的数字相同,则快指针向前走一步 如果不同,则两个指针都向前走一步 当快指针走完整个数组后,慢指针当前的坐标加1就是数组中不同数字的个数 动画演示 动画演示

    77440

    LeetCode108|数组中重复的数字

    0x01,问题简述 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。...请找出数组中任意一个重复的数字。..., 1, 0, 2, 5, 3] 输出:2 或 3 限制: 2 <= n <= 100000 0x03,题解思路 这里给出两种解决方式,一个是使用键值对集合HashMap进行解决,一个使用数组的方式进行解决...} return -1; } } 0x05,题解程序图片版 0x06,总结一下 其实,每次题解做完之后,总结性的话就变得很少了,我倒是觉得程序完全就体现了整个内容,过多的注释性说明真的那么重要吗...,对于输出者而言就是一种简单的描述而已,或许对于读者而言就是很好的内容说明吧

    49820

    图解LeetCode第 3 号问题:无重复字符的最长子串

    该文已加入开源项目:LeetCodeAnimation(用动画的形式呈现解LeetCode题目的思路,目前 4000 Star )。...地址:https://github.com/MisterBooo/LeetCodeAnimation LeetCode上第 3 号问题:Longest Substring Without Repeating...题目描述 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。...解释: 无重复字符的最长子串是 "b",其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 无重复字符的最长子串是 "wke",其长度为 3。...思路解析 建立一个256位大小的整型数组freg,用来建立字符和其出现位置之间的映射。 维护一个滑动窗口,窗口内的都是没有重复的字符,去尽可能的扩大窗口的大小,窗口不停的向右滑动。

    2.9K20

    每日算法系列【LeetCode 329】矩阵中的最长递增路径

    题目描述 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。你不能在对角线方向上移动或移动到边界外(即不允许环绕)。...题解 DFS+记忆化搜索 对于点 来说,以它为终点的最长递增路径一定会经过上下左右四个点其一。...所以如果它四周的点小于 ,就递归遍历四周的点,然后以 为终点的最长递增路径长度就是以四周小于它的点为终点的最长递增路径长度加 : 注意这里四周的点首先不能超过边界,然后数值上必须小于 。...拓扑排序 把每个格子当作一个点,然后从数值小的点向四周比它大的点连一条有向边,最终一定会形成一个有向无环图,问题就转变成了求有向无环图中的最长路径。...方法是先找到所有入度为 的结点,然后放入一个队列,依次从队列里取出结点,从图中删除这些结点。然后图中就出现了新的入度为 的结点了,它们路径长度加 。接着重复上面的操作,直到最后没有结点。

    1.1K10
    领券