「java常见算法题」Java计算题

博主:adminadmin 2022-11-21 16:33:10 104

本篇文章给大家谈谈java常见算法题,以及Java计算题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java算法题

public class Monkey

{

public static void main(String[] args)

{

int sum=0,remain=1;

//每天吃剩的桃子加一个正好是前一天桃子的一半,每天桃子的总数就是前一天剩下桃子的数量

for(int day=9;day=1;day--)

{

sum=(remain+1)*2;

remain=sum;

System.out.println("第"+day+"天还剩"+remain+"个桃子");

}

System.out.println(sum);

}

}

java常见gc算法有哪些

1:标记—清除

Mark-Sweep

过程:标记可回收对象,进行清除

缺点:标记和清除效率低,清除后会产生内存碎片

2:复制算法

过程:将内存划分为相等的两块,将存活的对象复制到另一块内存,把已经使用的内存清理掉

缺点:使用的内存变为了原来的一半

进化:将一块内存按8:1的比例分为一块Eden区(80%)和两块Survivor区(10%)

每次使用Eden和一块Survivor,回收时,将存活的对象一次性复制到另一块Survivor上,如果另一块Survivor空间不足,则使用分配担保机制存入老年代

3:标记—整理

Mark—Compact

过程:所有存活的对象向一端移动,然后清除掉边界以外的内存

4:分代收集算法

过程:将堆分为新生代和老年代,根据区域特点选用不同的收集算法,如果新生代朝生夕死,则采用复制算法,老年代采用标记清除,或标记整理

面试的话说出来这四种足够了

「java常见算法题」Java计算题

java算法有哪些分别

您好:

java中的算法,常见的有:递归、迭代、查找、排序(包含冒泡排序、选择排序、插入排序、快速排序四种) 等,算法有很多,一般数据结构中涉及到的都可以用java语言实现。

举几个例子:

1.递归的例子:

2.排序的例子:

不一一举例,仅供参考!

关于java算法编程的问题,输入成绩,判断每门课得分的范围是否合理,输入时候用空格分割,

一、题目分析:

要计算每个学生的平均成绩,需要获取如下信息:

1、学生总数;

2、科目数;

3、每个学生每科的成绩。

然后累加每个学生的总分,并计算总成绩。

二、算法设计:

1、输入学生总数;

2、输入科目数;

3、对于每个学生,输入各科成绩,计算总分及平均分,保存平均分值。

4、输出结果。

三、参考代码:

#include stdio.h

#include stdlib.h

int main()

{

int n, m;

float *p;

int i,j;

scanf("%d%d",n,m);//输入学生总数n和学科总数m。

p = (float *)malloc(sizeof(float)*n);//申请空间以存储平均分。

for(i = 0; i n; i ++)

{

p[i] = 0;//初始为0.

for(j = 0; j m; j ++)//输入每个学生每科成绩。

{

float t;

scanf("%f",t);

p[i]+=t;//累加获得总分。

}

p[i]/=m;//计算平均分。

}

for(i = 0; i n; i ++)//输出结果。

printf("%f\n", p[i]);

free(p);//释放内存。

return 0;

}

java面试有哪些算法

面试-java算法题:

1.编写一个程序,输入n,求n!(用递归的方式实现)。

public static long fac(int n){ if(n=0) return 0; else if(n==1) return 1; else return n*fac(n-1);

} public static void main(String [] args) {

System.out.println(fac(6));

}

2.编写一个程序,有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

public static void main(String [] args) { int i, j, k; int m=0; for(i=1;i=4;i++) for(j=1;j=4;j++) for(k=1;k=4;k++){ if(i!=jk!=ji!=k){

System.out.println(""+i+j+k);

m++;

}

}

System.out.println("能组成:"+m+"个");

}

3.编写一个程序,将text1.txt文件中的单词与text2.txt文件中的单词交替合并到text3.txt文件中。text1.txt文件中的单词用回车符分隔,text2.txt文件中用回车或空格进行分隔。

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

public class text{

public static void main(String[] args) throws Exception{

String[] a = getArrayByFile("text1.txt",new char[]{'\n'});

String[] b = getArrayByFile("text2.txt",new char[]{'\n',' '});

FileWriter c = new FileWriter("text3.txt");

int aIndex=0; int bIndex=0;

while(aIndexa.length){

c.write(a[aIndex++] + "\n");

if(bIndexb.length)

c.write(b[bIndex++] + "\n");

}

while(bIndexb.length){

c.write(b[bIndex++] + "\n");

}

c.close();

}

public static String[] getArrayByFile(String filename,char[] seperators) throws Exception{

File f = new File(filename);

FileReader reader = new FileReader(f);

char[] buf = new char[(int)f.length()];

int len = reader.read(buf);

String results = new String(buf,0,len);

String regex = null;

if(seperators.length 1 ){

regex = "" + seperators[0] + "|" + seperators[1];

}else{

regex = "" + seperators[0];

}

return results.split(regex);

}

}

4.639172每个位数上的数字都是不同的,且平方后所得数字的所有位数都不会出现组成它自身的数字。(639172*639172=408540845584),类似于639172这样的6位数还有几个?分别是什么?

这题采用的HashMap结构判断有无重复,也可以采用下题的数组判断。

public void selectNum(){

for(long n = 100000; n = 999999;n++){

if(isSelfRepeat(n)) //有相同的数字,则跳过

continue;

else if(isPingFangRepeat(n*n,n)){ //该数的平方中是否有与该数相同的数字

continue;

} else{ //符合条件,则打印 System.out.println(n);

}

}

} public boolean isSelfRepeat(long n){

HashMapLong,String m=new HashMapLong,String(); //存储的时候判断有无重复值

while(n!=0){ if(m.containsKey(n%10)){ return true;

} else{

m.put(n%10,"1");

}

n=n/10;

} return false;

} public boolean isPingFangRepeat(long pingfang,long n){

HashMapLong,String m=new HashMapLong,String(); while(n!=0){

m.put(n%10,"1");

n=n/10;

} while(pingfang!=0){ if(m.containsKey(pingfang%10)){ return true;

}

pingfang=pingfang/10;

} return false;

} public static void main(String args[]){ new test().selectNum();

}

5.比如,968548+968545=321732732它的答案里没有前面两个数里的数字,有多少这样的6位数。

public void selectNum(){

for(int n = 10; n = 99;n++){

for(int m = 10; m = 99;m++){ if(isRepeat(n,m)){ continue;

} else{

System.out.println("组合是"+n+","+m);

}

}

}

} public boolean isRepeat(int n,int m){ int[] a={0,0,0,0,0,0,0,0,0,0}; int s=n+m; while(n!=0){

a[n%10]=1;

n=n/10;

} while(m!=0){

a[m%10]=1;

m=m/10;

} while(s!=0){ if(a[s%10]==1){ return true;

}

s=s/10;

} return false;

} public static void main(String args[]){ new test().selectNum();

}

6.给定String,求此字符串的单词数量。字符串不包括标点,大写字母。例如 String str="hello world hello hi";单词数量为3,分别是:hello world hi。

public static void main(String [] args) { int count = 0;

String str="hello world hello hi";

String newStr="";

HashMapString,String m=new HashMapString,String();

String [] a=str.split(" "); for (int i=0;ia.length;i++){ if(!m.containsKey(a[i])){

m.put(a[i],"1");

count++;

newStr=newStr+" "+a[i];

}

}

System.out.println("这段短文单词的个数是:"+count+","+newStr);

}

7.写出程序运行结果。

public class Test1 { private static void test(int[]arr) { for (int i = 0; i arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException();

} else {

System.out.print(i);

}

} catch (Exception e) {

System.out.print("a ");

} finally {

System.out.print("b ");

}

}

}

public static void main(String[]args) { try {

test(new int[] {0, 1, 2, 3, 4, 5});

} catch (Exception e) {

System.out.print("c ");

}

}

}

运行结果:a b 1b a b 3b a b 5b

public class Test1 { private static void test(int[]arr) { for (int i = 0; i arr.length; i++) { try { if (arr[i] % 2 == 0) { throw new NullPointerException();

} else {

System.out.print(i);

}

}

finally {

System.out.print("b ");

}

}

}

public static void main(String[]args) { try {

test(new int[] {0, 1, 2, 3, 4, 5});

} catch (Exception e) {

System.out.print("c ");

}

}

}

运行结果:b c

8.单词数

统计一篇文章里不同单词的总数。

Input

有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。

Output

每组值输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。

Sample Input

you are my friend

#

Sample Output

4

public static void main(String [] args) {

ListInteger countList=new ArrayListInteger(); int count;

HashMapString,String m;

String str; //读取键盘输入的一行(以回车换行为结束输入) String[] a;

Scanner in=new Scanner(System.in);

while( !(str=in.nextLine()).equals("#") ){

a=str.split(" ");

m=new HashMapString,String();

count = 0; for (int i=0;ia.length;i++){ if(!m.containsKey(a[i]) (!a[i].equals(""))){

m.put(a[i],"1");

count++;

}

}

countList.add(count);

}s for(int c:countList)

System.out.println(c);

}

java 一道算法题,阿里面试的题,我同学给我的,希望有人解答下?

HashMapString, Object ihp = new LinkedHashMapString, Object();

自定义一个类

static class MyMap

{

List[] lists;

public MyMap(List... lists)

{

this.lists = lists;

}

public String toString()

{

if (lists == null || lists.length == 0)

{

return "{}";

}

StringBuilder sb = new StringBuilder();

sb.append('{');

int i = 0;

for (List list: lists)

{

sb.append(list);

i++;

if (i == lists.length)

return sb.append('}').toString();

sb.append(",");

}

return "{}";

}

}

ihp.put("on1",new MyMap(list2,list1));

ihp.put("on2",new MyMap(list4,list3));

ihp.put("on3",new MyMap(list5));

ihp.put("on4",new MyMap(list6));

System.out.println(ihp.toString());

估计有更好的办法,最开始想到的是List[],发现打印出来是[[xxx,xxx,xxx],[xx,x,x]]这种结构

java常见算法题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java计算题、java常见算法题的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。