蔚来笔试


1.三个for循环 直接全部过,要注意越界问题,用long

2.递归int f(int now,int target){},这道题要注意越界,用long
public static long f(long now,long target)
{
    if(now>target){return Integer.MAX_VALUE;}
    if(now==target){return 0;}
    int l=f(now*a,target);
    int r=f(now*b,target);
    int temp=Math.min(l,r);
    if(temp!=Integer.MAX_VALUE)
    {
        return temp+1;
    }
    else{
        return Integer.MAX_VALUE;
    }
    
}




3.需要先根据费用排序,然后暴力递归,f(int[][] arr,int index,int k,LinkedList<Integer> fee)。没排序只过了50%超时了。。
public class Weilai {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt(); int k = sc.nextInt();
    int[][] arr=new int[n][2];
    for(int i=0;i<n;i++)
    {
        arr[i][0]=sc.nextInt();
        arr[i][1]=sc.nextInt();
    }
    LinkedList<Integer> fee = new LinkedList<>();
    Arrays.sort(arr,(o1, o2)->{return o1[0]-o2[0];});  System.out.println(f(arr,0,k,fee));
    }
    public static long f(int[][] arr, int index, int k, LinkedList<Integer> fee)
    {
        if(index>=arr.length)
        { return 0L;  }
        for(int i:fee)
        {
            if(Math.abs(arr[index][0]-i)>=k){return 0L;}
        }
        long l=0;  long r=0;
        fee.addLast(arr[index][0]);
        l=f(arr,index+1,k,fee)+arr[index][1];//选择当前
        fee.removeLast();
        r=f(arr,index+1,k,fee);//不选择当前
        return Math.max(l,r);
    }
}        


全部评论
请问有对应的LeetCode题么
1 回复 分享
发布于 2022-07-13 21:22
第三题可以排序后直接二分
点赞 回复 分享
发布于 2022-07-13 21:23
草,数据类型全是long,我就是我的题都只过了一半
点赞 回复 分享
发布于 2022-07-13 21:36
排序之后第一个用例就过不了啊
点赞 回复 分享
发布于 2022-07-13 21:44
t3可以模仿lc上子数组的最大和问题,排序+滑动窗口,只用扫一遍即可
点赞 回复 分享
发布于 2022-07-14 09:02
点赞 回复 分享
发布于 2022-07-14 09:03
acm模式吗还是输入输出也是敲
点赞 回复 分享
发布于 2022-07-15 11:52
请问是ACM模式还是核心代码模式?
点赞 回复 分享
发布于 2022-07-15 15:35
你好,我想问一下编程题语言有python吗,上一轮笔试听说就只有java c++ 和ts
点赞 回复 分享
发布于 2022-08-04 16:54

相关推荐

牛客604067584号:我9月初投递10月入池,泡到现在。hr全部离职,当然没离职的时候也联系不上。我发邮件给campus也不回我
点赞 评论 收藏
分享
评论
5
42
分享

创作者周榜

更多
牛客网
牛客企业服务