招行题解

p1:应该有更快的~:
import java.util.Arrays; import java.util.Scanner; public class wain { public static void main(String args[]){
        Scanner in =new Scanner(System.in); while (in.hasNext()) { int n = in.nextInt(); int arr[]=new int[n]; for (int i=0;i<n;i++){
                arr[i]=in.nextInt();
            }
            Arrays.sort(arr); for (int i=0;i<n;i++){ if(arr[i]!=i){
                    System.out.println(i); break;
                }
            }
        }
    }
}
p2:BFS+记录hashset:
import java.util.*; import java.util.Arrays; public class xain { public static void main(String args[]){
        Scanner in =new Scanner(System.in); while (in.hasNext()) { int x = in.nextInt();
            System.out.println(find(x));
        }
    } public static int find(int x){
        Queue<Integer> queue =new LinkedList<>();
        HashSet<Integer> set=new HashSet<>();
        set.add(0);
        queue.offer(0); int step=0; while (!queue.isEmpty()){ int size=queue.size(); for (int i=0;i<size;i++){ int now=queue.poll(); if(now==x){ return step;
                } if(!set.contains(now-1)) {
                    queue.offer(now-1);
                    set.add(now-1);
                } if(!set.contains(now+1)) {
                    queue.offer(now + 1);
                    set.add(now+1);
                } if(!set.contains(now*2)) {
                    queue.offer(2 * now);
                    set.add(now*2);
                }
            }
            step++;
        } return 0;
    }
}
p3:丑数动态规划
import java.util.*; public class Main { public static void main(String args[]){
        Scanner in =new Scanner(System.in); while (in.hasNext()) { int n = in.nextInt();
           System.out.println(find(n));
            }
    } public static int find(int x){ int [] zhiyinshu= new int[3]; int [] dp=new int[x];
        dp[0]=1; int a=2,b=3,c=5; for (int i=1;i<x;i++){ int min=Math.min(a,Math.min(b,c));
            dp[i]=min; if(a==min){
                a=2*dp[++zhiyinshu[0]];
            } if(b==min){
                b=3*dp[++zhiyinshu[1]];
            } if(c==min){
                c=5*dp[++zhiyinshu[2]];
            }
        } return dp[x-1];
    }
    }





全部评论
膜一下大佬
点赞 回复 分享
发布于 2018-04-10 21:05
为什么我只有一道编程题?
点赞 回复 分享
发布于 2018-04-10 21:09
??
点赞 回复 分享
发布于 2018-04-10 21:11
第一题直接用等差数列求和减去所有已知数的和就可以了吧
点赞 回复 分享
发布于 2018-04-10 21:20

相关推荐

10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
诨号无敌鸭:恭喜佬,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务