春招简单的语法题
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); } }