拼多多4.10笔试第四题




public class Main {
    public int getLongestSubLen(List<Integer> list){
        int i=0;
        int j = 0;
        int res = 0;
        while(j<list.size()){
            while(j<list.size()&&Objects.equals(list.get(i),list.get(j)))++j;
            if(j-i>res)res = j-i;
            i = j;
        }
        if (j-i>res)res = j-i;
        return res;
    }
    public void func(List<Integer> list,int k){
        int len = getLongestSubLen(list);
        if(len>ansLen)ansLen = len;
        if (k<=0)return;
        for (int i = 0;i<list.size();++i){
            int element = list.remove(i);
            func(list,k-1);
            list.add(i,element);
        }
    }
    int ansLen = 0;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int k = scanner.nextInt();
        List<Integer> list = new LinkedList<>();
        for (int i=0;i<n;++i){
            list.add(scanner.nextInt());
        }
        Main test = new Main();
        test.func(list,k);
        System.out.println(test.ansLen);
    }
}




这是我当时的作答,才通过10% T_T,刚看了其他人的解答,好像用离散+滑动窗口和尺取法能通过,但是看代码还是没看明白。。。


#拼多多笔试##拼多多##笔试题目#
全部评论
直接print(2)有20%
点赞 回复 分享
发布于 2020-04-11 17:20

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
04-08 05:32
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务