java面试算法有哪些?常见的面试算法问题

阳光 2020-12-28 22:38:54 java常见问答 4801

在面试中,大家经常会被问题java面试算法的相关问题,有些小伙伴面对这样的问题不知道怎么解决,那么今天我们就给大家分享一些常见的java面试算法问题,给大家做一些积累。

1. 给出一个排序好的数组和一个数,求数组中连续元素的和等于所给数的子数组

//给出一个排序好的数组和一个数,求数组中连续元素的和等于所给数的子数组
@Test
public void test()
{
    int[] num = {1, 2, 2, 3, 4, 5, 6, 7, 8, 9};
    int sum = 7;
    findSum(num, sum);
}
public void findSum(int[] num, int sum)
{
    int left = 0;
    int right = 0;
    for (int i = 0; i < num.length; i++)
    {
        <
        p = "" >
            int curSum = 0;
        left = i;
        right = i;
        while (curSum < sum)
        {
            <
            p = "" >
                curSum += num[right++];
        }
        if (curSum == sum)
        {
            for (int j = left; j < right; j++)
            {
                <
                p = "" >
                    System.out.print(num[j] + " ");
            }
            System.out.println();
        }
    }
}

2、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

//这是一个菲波拉契数列问题
public class lianxi01
{
    public static void main(String[] args)
    {
        System.out.println("第1个月的兔子对数: 1");
        System.out.println("第2个月的兔子对数: 1");
        int f1 = 1, f2 = 1, f, M = 24;
        for (int i = 3; i <= M; i++)
        {
            f = f2;
            f2 = f1 + f2;
            f1 = f;
            System.out.println("第" + i + "个月的兔子对数: " + f2);
        }
    }
}

3、判断101-200之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

public class lianxi02
{
    public static void main(String[] args)
    {
        int count = 0;
        for (int i = 101; i < 200; i += 2)
        {
            boolean b = false;
            for (int j = 2; j <= Math.sqrt(i); j++)
            {
                if (i % j == 0)
                {
                    b = false;
                    break;
                }
                else
                {
                    b = true;
                }
            }
            if (b == true)
            {
                count++;
                System.out.println(i);
            }
        }
        System.out.println("素数个数是: " + count);
    }
}

4、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

import java.util.*;
public class lianxi04
{
    public static void main(String[] args)
    {
        Scanner s = new Scanner(System.in);
        System.out.print("请键入一个正整数: ");
        int n = s.nextInt();
        int k = 2;
        System.out.print(n + "=");
        while (k <= n)
        {
            if (k == n)
            {
                System.out.println(n);
                break;
            }
            else if (n % k == 0)
            {
                System.out.print(k + "*");
                n = n / k;
            }
            else k++;
        }
    }
}

这些都是比较热门的算法问题,如果大家有需要的话,可以将本篇文章收藏,没事的时候拿出来看看,积少成多,慢慢积累自己的经验,最后大家如果想要了解更多java面试题知识,敬请关注奇Q工具网。

推荐阅读:

java工厂模式面试题一般有哪些?java面试题

java面试题,Integer和int有哪些不同?

java面试题常见编程题有哪些?