求帮忙啊,如何写如下算法

请给出函数,实现如下功能

class Solution { public int maxRS(int[] A); }

给定一个0为起始下标的数组 A ,其中包含 N 个整数, 返回 A 中最长的连续递增子序列的起始下标, 如果不存在这样的子序列,则返回−1

例如,给定 N=10 并且

 

A[0] =  2  A[1] = 2  A[2] = 2
A[3] =  2  A[4] = 1  A[5] = 2
A[6] = -1  A[7] = 2  A[8] = 1
A[9] =  3  

 

此函数可以返回 4,因为 A 中最长的连续递增子序列的长度为 2, 同时从下标 4 开始的长度为 2 的子序列是一个连续递增子序列, 6 或者 8 同样也是正确的答案。

又例如:给定 N=3 的数组 A[0]=30, A[1]=20, A[2]=10, 此函数可以返回 0, 1, 2, 因为数组 A 的最长的连续递增子序列的长度为 1.

数组 A 中可能包含数百兆字节的数据。

假定:

  • N 是 [1..1,000,000] 内的 整数;
  • 数组 A 每个元素是取值范围 [−2,147,483,648..2,147,483,647] 内的 整数 .

复杂度:

  • 最坏-情况下,期望的时间复杂度是 O(N);
  • 最坏-情况下,期望的空间复杂度是 O(N), 输入存储除外 (不计输入参数所需的存储空间).

输入数组中的元素可以修改.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值