春招简单的语法题

25.输入 n b, 找出 1-n 中被 b 整除的个数。例:输入 6 3 输出 2,(3 和 6)(if判断取余运算)

public class solution {
    public static void solution(int n,int b)
    {
        for(int i=1;i<=n;i++)
        {
            if(i%b==0)
                System.out.print(i);
        }
    }
    public static void main(String[] args)
    {
        solution(6,2);
    }
}

26.输入十个数,最大数和最后一个数交换,最小数和第一个数交换(for,swap)

public class solution {
    public static void solution(int [] a)
    {
        int n=a.length;
        int max=0;int min=0;
        for(int i=0;i<n;i++)
        {
            if(a[i]>a[max])
                max=i;
            if(a[i]<a[min])
                min=i;
        }
        swap(a[0],a[min]);
        swap(a[n-1],a[max]);
        for(int i=0;i<n;i++)
            System.out.print(a[i]+",");
    }
    public static void swap(int a,int b)
    {
        int temp=a;
        a=b;
        b=temp;
    }
    public static void main(String[] args)
    {
        int[] a={1,4,58,7,9,6,3,789,7};
        solution(a);
    }
}

27.输入一个数 n,计算 1 (1 2) (1 2 3) ..... (1 2 ... n)(for运算,阶乘计算)

public class solution {
    public static int  solution(int a)
    {
        if(a==0)return 0;
        if(a==1)return 1;
        return solution(a-1)*a;
    }
    public static void swap(int a,int b)
    {
        int temp=a;
        a=b;
        b=temp;
    }
    public static void main(String[] args)
    {
        int a=10;
        int n=solution(a);
        System.out.print(n);
    }
}

28.100 以内的完数(for if 判断%来判断是不是因子)

public class solution {
    public static void solution()
    {
        for(int i=1;i<=100;i++)
        {
            if(isw(i))
                System.out.print(i+",");
        }
    }
    public static boolean isw(int a)
    {
        int ans=0;
        for(int i=1;i<a;i++)
        {
            if(a%i==0)
                ans=ans+i;
        }
        if(ans==a)
            return true;
        else return false;
    }
    public static void swap(int a,int b)
    {
        int temp=a;
        a=b;
        b=temp;
    }
    public static void main(String[] args)
    {
        solution();
    }
}

29.输出 N 的阶乘(for 或者递归)
30.整数取偶数位上的数,即输入一个数字要求输出该数字各个位上偶数的和,
如输入 5584,输出 12(for if /10,%10))
31.输入一个整数,取出这个整数中的偶数位上的数字组成一个新数并输出,例
如输入 123456,输出 246(for if /10 %10即可)
32.求两个数的最大公约数和最小公倍数(辗转相除法)

public class solution {
    public static void solution(int a,int b)
    {
        int temp=0;int m=a*b;
        while(b!=0)
        {
            temp=a%b;
            a=b;
            b=temp;
        }
        System.out.print(a+","+m/a);
    }
    public static void main(String[] args)
    {
        solution(8,12);
    }
}

64.一元钱买一瓶汽水,两个空汽水瓶换一瓶汽水,三个瓶盖换一瓶汽水,输入(if判断递归调用即可)
70.输入一个数字组成的数组,这些数字要么有 3 个,要么有 1 个,找出那一个
数字,例如 2223334445666,则输出 5 (利用%10 /10 for 加上数组计算即可)

public class solution {
    public static void solution(String s)
    {
        int n=s.length();
        int[] num=new int[11];
        char[] s1=s.toCharArray();
        for(int i=0;i<n;i++)
        {
            num[s1[i]-'0']++;
        }
        for(int i=0;i<num.length;i++)
        {
            if(num[i]==1)
            {System.out.print(i);}
        }
    }
    public static void main(String[] args)
    {
        solution("2223334445666");
    }

}

68.从一个边长为 a 的正方形里裁剪下来一个边长为 b 的正方形,判断剩下的 L
形面积是否是一个质数(即判断a2-b2是不是一个素数,可以学习一下素数的判断方法)

public class solution {
    public static void solution(int a,int b)
    {
        int temp=a*a-b*b;
        if(isp(temp))
            System.out.print("yes");
        else System.out.print("no");
    }
    public static boolean isp(int n)
    {
        if(n < 2) return false;
        if(n == 2) return true;
        if(n%2==0) return false;
        int n1=(int)Math.sqrt(n);
        for(int i=2;i<=n1;i++)
            if(n%i==0)
                return false;
        return true;
    }
    public static void main(String[] args)
    {
        solution(22,2);
    }

}

62.问题简述:一只小猴子吃桃子的问题。话说,一只小猴子第一天摘下若干个
桃子,并吃了一半。感觉到吃的还不瘾,于是又多吃了一个;第二天早上,
又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上,都吃了前一天剩下
的一半零一个。问题:请问,到了第 10 天早上想再吃时,却发现只剩下一个
桃子了。求第一天共摘了多少?(一个数学问题)

public class solution {
    public static void solution(int day)
    {
        int x1=1;int x2=0;
        while(day>0)
        {
            day--;
            x2=(x1+1)*2;
            x1=x2;
        }
        System.out.print(x2);
    }
    public static void main(String[] args)
    {
        solution(9);
    }

}

38.给出某年某月某日,求出该日期是该年的第几天
days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};还要判断是不是闰年
days[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}

public class solution {
    public static void solution(String s)
    {
        String[] n=s.split(",");
        int[] d1={0,31,28,31,30,31,30,31,31,30,31,30,31};
        int[] d2={0,31,28,31,30,31,30,31,31,30,31,30,31};
        Integer year=Integer.valueOf(n[0]);
        Integer month=Integer.valueOf(n[1]);
        Integer day=Integer.valueOf(n[2]);
        int ans=0;
        if(isyear(year)){
            int[] d=d1;
            for(int i=0;i<month;i++)
            {
                ans=d[i]+ans;
            }
            ans=ans+day;
        }
        else{
            int[] d=d2;
            for(int i=0;i<month;i++)
            {
                ans=d[i]+ans;
            }
            ans=ans+day;
        }
        System.out.print(ans);
    }
    public static boolean isyear(int year)
    {
        boolean n1=(year%4==0);
        boolean n2=(year%100==0);
        boolean n3=(year%400==0);
        if((n1&&!n2)||(n2&&!n3))
        {
            return true;
        }
        else return false;
    }
    public static void main(String[] args)
    {
        solution("2020,4,7");
    }
}

46.1+2/3+3/5+4/7+…数列求和,输出结果(for 上面是每次加1下面是奇数)

public class solution {
    public static void solution(int n)
    {
        double ans=0;
        for(double i=1;i<=n;i++)
        {
            ans=ans+i/(2*i-1);
        }
        System.out.print(ans);
    }
    public static void main(String[] args)
    {
        solution(10);
    }
}

48.输入几个单词,将字母变换成另外一组单词输出,若字母是 i,则变换后的
字母是 26+i-1

public class solution {
    public static void solution(String s)
    {
        char[] num=s.toCharArray();
        for(int i=0;i<num.length;i++)
        {
            num[i]=change(num[i]);
        }
        num.toString();
        System.out.print(num);
    }
    public static char change(char c)
    {
        return (char) (c+26-1);
    }
    public static void main(String[] args)
    {
        solution("dsauhuiahfa");
    }
}

49.给一个 8 元素数组例如 1 3 0 3 6 0 0 9 将所有 0 放后面,其他数字顺序不
变,结果为 1 3 3 6 9 0 0 0(原地交换学习一下

public class solution {
    public static void solution(int[] num)
    {
        int fast=0;
        int slow=0;
        while(fast<num.length)
        {
            if(num[fast]!=0)
            {
                num[slow]=num[fast];
                fast++;slow++;
            }
            else fast++;
        }
        for(int i=slow;i<num.length;i++)
            num[i]=0;
        for(int i=0;i<num.length;i++)
            System.out.print(num[i]);
    }
    public static void main(String[] args)
    {
        int [] num={1,6,0,9,0,3,0};
        solution(num);
    }
}

51.给一个数组,一个 target 值,求数组中俩元素和为 target 的俩下标

import java.util.HashMap;
import java.util.Map;


public class solution {
    public static void solution(int[] num,int t)
    {
        Map<Integer,Integer> map=new HashMap<Integer,Integer>();
        for(int i=0;i<num.length;i++)
        {
            if(map.containsKey(t-num[i]))
                System.out.print(i+","+map.get(t-num[i]));
            map.put(num[i], i);
        }
    }
    public static void main(String[] args)
    {
        int [] num={1,6,0,9,0,3,0};
        int t=7;
        solution(num,t);
    }
}

52.将两个数组合并成一个数组,删除重复的元素然后排序,例如输入[1,2,3]、
[3,4,5,2],则合并得到[1, 4, 5],输入[1,2,3,3]和[3,9,6]合并得到
[1,2,6,9](建立hash表,判断如果等于1就跳过等于零就放进去 fast slow)

import java.util.HashMap;
import java.util.Map;
public class solution {
    public static void solution(int[] num1,int[] num2)
    {
        int[] ans=meger(num1,num2);
        sort(ans);
        for(int i=0;i<ans.length;i++)
            System.out.print(ans[i]+",");
    }
    public static int[] meger(int[] num1,int[] num2)
    {
        int[] count=new int[10000000];
        int[] ans=new int[num1.length+num2.length+1];
        for(int i=0;i<num1.length;i++)
            count[num1[i]]++;
        for(int i=0;i<num2.length;i++)
            count[num2[i]]++;
        int num=0;
        for(int i=0;i<num1.length;i++)
            ans[num++]=num1[i];
        for(int i=0;i<num2.length;i++)
            if(count[num2[i]]==1)ans[num++]=num2[i];
        return ans;
    }
    public static void sort(int[] num1)
    {
        for(int i=0;i<num1.length;i++)
        {
            for(int j=i;j<num1.length;j++)
            {
                if(num1[i]>num1[j])
                {
                    int temp=num1[i];
                    num1[i]=num1[j];
                    num1[j]=temp;
                }
            }
        }
    }
    public static void main(String[] args)
    {
        int [] num1={1,3,4,89};
        int [] num2={1,2,6,4,9,10};
        int t=7;
        solution(num1,num2);
    }
}

全部评论

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务