算法题 日常记录

题目:0-999999之间的所有整数数字中,任何一位都不包括数字3的数字总数有多少个?
答案:9+8*9+8*9*9+8*9*9*9+8*9*9*9*9+8*9*9*9*9*9

题目:25匹马5个跑道,怎样选出最快的5匹来?最少的次数。如果选3次呢?
答案:选5个最少8次,最多9次;
选3个,只需要比较7次。

算法题 日常记录_第1张图片

题目:64匹马,8条跑道,分几次可以选出最快的4匹?
答案:11次。

首先:分为9组分别进行比赛后得到每一组的比赛名次,比赛场次:9;
然后:将9组的每组第一名比赛,得到第一名,肯定是所有马的第一名;比赛场次:1
最后:剩下马中有资格角逐前四名的马有A2、A3、A4、B1、B2、B3、C1、C2、D1,刚好有9匹马,在进行一场比赛就可以了,比赛场次:1

从数组中找出连续的最大值
如输入1,-3,5,5,-6,-2,-7 输出10
我自己写的maxSum()方法只通过百分之50
舍友的maxSum2()方法全通过了 不知道我漏掉哪里了 先记录一下

… 理解了 我输出的时候从0开始了 真是蠢哭自己 如果最大是负数就输出错了 让max从a0开始就好了 一个教训…

public class xiechengoj1 {
    
     static int maxSum(int[] a) {
         int x[]=new int[a.length];
         x[0]=a[0];
         for(int i=1;ix[i-1]+a[i]){
                 x[i]=a[i];
             }else
                 x[i]=x[i-1]+a[i];
         }
         int max=0;
         for(int i=0;imax)
                 max=x[i];
         }
         for(int i=0;i

从一堆数里选出第一个只出现一次的数,时间复杂度0(n)
如1,1,2,2,3,3,4,5,4,8 输出 5

public class xiechengoj2 {

        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            String s=in.nextLine();
            String s1[]=s.split(",");
            HashSet set=new HashSet<>();
            HashMap map=new HashMap<>();
            int a[]=new int[s1.length];
            for(int i=0;i

你可能感兴趣的:(算法题 日常记录)