2017-8-31美团笔试交错序列

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sca = new Scanner(System.in );
		int len = sca.nextInt();
		int[] a = new int[len];
		for(int i =0; i<len;i++){
			a[i] = sca.nextInt();
		}
		int sum =1;
		int[] temp = new int[len];
		for(int i=0;i<len;i++) {
			temp[i] = 1;
		}
		for(int i =1; i<len;i++){
			int j =i-1;
			while(j>=0 && a[i]==a[j]) --j;
			if(j>=0) {
				temp[i]+=temp[j];
			}
			
		}
		int max = 1;
		for(int i=0;i<len;++i) {
				max = Math.max(max,temp[i]);
		}
		System.out.println(max);
	}
}

全部评论
什么岗位  后台岗位不是没碰到这个
点赞 回复 分享
发布于 2017-08-31 22:57
我还以为就我一个人是做的这个题!哈哈哈哈…原来你也是这个…
点赞 回复 分享
发布于 2017-08-31 23:17
这道题是不是可以简单来算:最长子串的首字母应该是和输入子串的首字母相同(除非有一个同样长度的0开头子串),那么接下来遍历字符串,交错的判断就可以了。 int length = 1; int curNum = p[0]; for (int i = 1; i < p.length; i++) { if (p[i]!=curNum) { length++; curNum = p[i]; } }
点赞 回复 分享
发布于 2017-08-31 23:27
这是动态规划的题,每一位都维护两个标志,一个是到本位为止以0为结尾的交替数列的最大长度,和以1结尾的交替数列的最大长度。
点赞 回复 分享
发布于 2017-09-01 13:57
前端也碰到了。。
点赞 回复 分享
发布于 2017-09-01 13:58

相关推荐

三年之期已到我的offer快到碗里来:9硕都比不上9本
点赞 评论 收藏
分享
牛客279957775号:铁暗恋
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务