求子专题

Leetcode 713.乘积小于k的子数组(不定长滑动窗口(求子数组个数))

给你一个整数数组 nums 和一个整数 k ,请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。 示例 1: 输入:nums = [10,5,2,6], k = 100输出:8解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2]、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 1

「动态规划」如何求子数组中等差数列的个数?

413. 等差数列划分https://leetcode.cn/problems/arithmetic-slices/description/ 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7]和[3,-1,-5,-9]都是等差数列。给你一个整数数组nums,返回数组nums中所有为等差数组的子数组个数。子数组是数组中的

[华为机试练习题]56.求子数组的最大和

题目 描述: 输入一个整形数组。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。 接口 Int GetSubArraySum(Int* pIntArray,Int nCount); 规格 要求时间复杂度为O(n) 举例 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7,

poj 2018 斜率DP 求子序列的最大平均值

#include<cstdio>#include<cstring>#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))struct node{double x,y;}q[100100];double cal(double x1,double y1,double x2,double y2){retur

求子数组问题

子数组问题分为三类: 1:连续子数组 2:非连续子数组 3:可连续也可以不连续 这三类问题的解决办法一般都是循环或者动态规划,尝试了dfs算法,结果把自己给绕进去了!   一:最大升序问题(属于第三类) 参考:https://www.cnblogs.com/lerongwei/p/4890633.html 1:动态规划解法: 利用动态规划来做,假设数组为1, -1, 2, -3,