Java日记2018-05-17

第一题 丑数
把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含因子 7。 习惯上我们把 1 当做是第一个丑数。求按从小到大的顺序的第 N 个丑数。

默认把第一个丑数算成1;以第7个丑数为例,一定是前6个丑数乘以2 3 5中最小的。具体来看丑数是1 2 3 4 5 6 8 9。。很显然9是uglyarray[2]3得到的,4是uglyarray[1]2。假设当前丑数是uglyarray[i],那么uglyarray[i+1] 一定是上一个2的因子乘以2,3的因子乘以3,5的因子乘以5中的最小的。那么各因子的索引也一定是小于等于uglyarray[i],下一个索引就自然加1

public static int getugly(int n) {
        if(n<1) return 0;
        int[] uarr = new int[n];
        int index2=0;
        int index3=0;
        int index5=0;
        uarr[0]=1;
        int min=0;
        for(int i=1;ib?b:a;
        return temp>c?c:temp;
    }

第二题 第一个只出现一次的字符位置
这个问题很直观,找到hashmap容器,有重复字就+1,然后从容器中取value是1的,没有则返回空

public static Character firstfind(String str) {
        if(str.length()==0) return null;
        HashMap hash = new HashMap<>();
        
        for(int i=0;i

你可能感兴趣的:(Java日记2018-05-17)