春招简单的语法题
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);
}
}
阿里云成长空间 747人发布