?101 Redraiment的走法【梅花桩】【最长上升子序列】

本文介绍了Redraiment在走梅花桩时如何寻找最长上升子序列的问题,通过样例展示了如何计算最多能走的步数,并提供了两种解题方法:动态规划和二分查找。动态规划法遍历数组更新最长子序列长度,复杂度为O(n^2),二分查找法根据插入索引判断是否添加元素或更新数字。
摘要由CSDN通过智能技术生成

题目描述
题目描述

Redraiment是走梅花桩的高手。Redraiment总是起点不限,从前到后,往高的桩子走,但走的步数最多,不知道为什么?你能替Redraiment研究他最多走的步数吗?

样例输入

6

2 5 1 5 4 5

样例输出

3

提示

Example:
6个点的高度各为 2 5 1 5 4 5
如从第1格开始走,最多为3步, 2 4 5
从第2格开始走,最多只有1步,5
而从第3格开始走最多有3步,1 4 5
从第5格开始走最多有2步,4 5

所以这个结果是3。

接口说明

方法原型:

int GetResult(int num, int[] pInput, List  pResult);

输入参数:
int num:整数,表示数组元素的个数(保证有效)。
int[] pInput: 数组,存放输入的数字。

输出参数:
List pResult: 保证传入一个空的List,要求把结果放入第一个位置。
返回值:
正确返回1,错误返回0

输入描述:
输入多行,先输入数组的个数,再输入相应个数的整数
输出描述:
输出结果
示例1
输入
6
2
5
1
5
4
5
输出
3

方法一:动态规划
每次都向前找比它小的以及比它大的位置,将第一个比它大的替换掉,这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值