渤海银行第二题 最长等比子序列

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Main10 {
    static int res=0;
    static ArrayList<ArrayList<Integer>>list;
    public static void main(String[] args) {
        int[]nums={1 ,3 ,2 ,5 ,4 ,2 ,8 ,6 ,16 ,9};
        //找出所有的子序列 然后判断是不是等比
        list=new ArrayList<>();
        ArrayList<Integer>temp=new ArrayList<>();
        dfs(nums,-1,temp);
//        for(ArrayList<Integer> line:list) {
//            for (int i : line)
//                System.out.print(i + " ");
//            System.out.println();
//        }
        System.out.println(res);

    }
    public static void dfs(int []nums,int curi,ArrayList<Integer>temp){
        list.add(new ArrayList(temp));
        if(isDB(temp)&&temp.size()>res){
            res=temp.size();
        }
        if(!isDB(temp)) return;
        for(int i=curi+1;i<nums.length;i++){
            temp.add(nums[i]);
            dfs(nums,i,temp);
            temp.remove(temp.size()-1);
        }
    }
    public static boolean isDB(ArrayList<Integer> nums){
        if(nums.size()==1||nums.size()==0) return true;
        int k=nums.get(1)/nums.get(0);
        for(int i=0;i<nums.size()-1;i++){
            if(nums.get(i+1)/nums.get(i)!=k) return false;
        }
        return true;
    }
}

#笔试题目##渤海银行#
全部评论
牛啊 校友 我这个题没写 哈哈
1 回复 分享
发布于 2021-10-18 10:02
有收到面试通知吗
点赞 回复 分享
发布于 2021-10-21 12:41
有点技术的呀大兄弟~
点赞 回复 分享
发布于 2021-10-19 11:56
暴力dfs能过?
点赞 回复 分享
发布于 2021-10-18 23:33
好家伙,这题还可以用dfs,上来就dp,结果就过了9%
点赞 回复 分享
发布于 2021-10-18 10:04
当时有个地方下标写错了就放弃了,第二天早上才看出来;第三道sql到最后只是保存了还没有运行出来😥 蹲一个兄弟告诉怎么算,让我死心。真是被自己菜到了
点赞 回复 分享
发布于 2021-10-17 20:58

相关推荐

03-21 08:46
已编辑
门头沟学院 C++
一个什么都不会的学生:当你有硕士学历的时候HR会说就是比本科生强
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客企业服务