`

Java五道题

    博客分类:
  • java
阅读更多

今天在微信公众号看到一篇“每个程序员半小时内必须解决的5个编程问题”,发现自己也不完全会,在网上搜罗做了整理,以便不时之需。

问题1

使用for循环、while循环和递归写出3个函数来计算给定数列的总和。

问题2

编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[1,2,3],函数返回[a,1,B,2,C,3]。

问题3

编写一个计算前100位斐波那契数的函数。根据定义,斐波那契序列的前两位数字是0和1,随后的每个数字是前两个数字的和。例如,前10位斐波那契数为:0,1,1,2,3,5,8,13,21,34。

问题4

编写一个能将给定非负整数列表中的数字排列成最大数字的函数。例如,给定[50,2,1,9],最大数字为95021。

问题5

编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。

 

问题1:

 

public class SumTest {

    public static void whileMethod(int[] array) {
        if (null == array || array.length == 0) {
            return;
        }
        int sum = 0;
        int i = 0;
        while (i < array.length) {
            sum += array[i];
            i++;
        }
        System.out.println("Sum result is while : " + sum);
    }

    public static void forMethod(int[] array) {
        if (null == array || array.length == 0) {
            return;
        }
        int sum = 0;
        int i = 0;
        for (int num: array) {
            sum += num;
        }
        System.out.println("Sum result is for : " + sum);
    }

    public static int recursiveMethod(int[] array, int i) {
        if (null == array || array.length == 0) {
            return 0;
        }
        if (i < array.length) {
            return array[i] + recursiveMethod(array, i + 1);
        }
        return 0;
    }
    public static void main(String[] args){

        int[] array = {1, 2, 3, 4, 5, 6, 7};
        whileMethod(array);
        forMethod(array);
        System.out.println(recursiveMethod(array, 0));
    }
}

问题2:

 

public class ListMerge {
    public static String[] mergeList(String[] arg1, String[] arg2) {
        String[] arr = new String[arg1.length + arg2.length];
        int i, j;
        for (i = 0, j = 0; i < arg1.length; i++) {
            j = 2 * i;
            if (j > 2 * arg2.length){
                j = arg2.length + i;
            }
            arr[j] = arg1[i];
         }
        for (i = 0, j = 0; i < arg2.length; i++) {
            j = 2 * i + 1;
            if (j > 2 * arg1.length) {
                j = arg1.length + 1;
            }
            arr[j] = arg2[i];
        }
        return arr;
    }
    public static void main(String[] args){
        String[] arr1 = { "a", "B", "c", "D", "e" };
        String[] arr2 = { "1", "2", "3" };
        String[] arr = mergeList(arr1, arr2);
        System.out.println(Arrays.toString(arr));
    }
}

问题3:

 

public class Fibonacci {
    private static int getNum(int num) {
        int count = 0;
        if (num <= 1) {
            count = 0;
        } else if (num == 2) {
            count = 1;
        } else {
            count = getNum(num - 1) + getNum(num - 2);
        }
        return count;
    }

    private static String getSum(int num) {
        String numStr = "";
        for (int i = 0; i <= num; i++) {
            numStr = getNum(i) + ",";
        }
        numStr = numStr.substring(0, numStr.length() - 1);
        return numStr;
    }

    public static void main(String[] args){

        System.out.println("The number is : " + getSum(100));
    }
}

问题4:

 

public class MaxValue {
    private static Integer[] VALUES = { 50, 2, 100, 99, 5, 7, 51,50 ,11};
    public static void main(String[] args){
        Arrays.sort(VALUES, new Comparator<Integer>() {
            public int compare(Integer o1, Integer o2) {
                String v1 = o1.toString();
                String v2 = o2.toString();
                return (v1 + v2).compareTo(v2 + v1) * - 1;
            }
        });
        String result = "";
        for (Integer integer: VALUES) {
            result += integer.toString();
        }
        System.out.println(result);
    }
}

问题5:

 

public class SameSum {
    
    private static int TARGET_SUM = 100;
    private static int[] VALUES = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    private static ArrayList add(int digit, String sign, ArrayList branches) {
        for (int i = 0; i < branches.size(); i++) {
            branches.set(i, digit + sign + branches.get(i));
        }
        return branches;
    }

    private static ArrayList f(int sum, int number, int index) {
        int digit = Math.abs(number % 10);
        if (index >= VALUES.length) {
            if (sum == number) {
                ArrayList result = new ArrayList();
                result.add(Integer.toString(digit));
                return result;
            } else {
                return new ArrayList();
            }
        }
        ArrayList branch1 = f(sum - number, VALUES[index], index + 1);
        ArrayList branch2 = f(sum - number, -VALUES[index], index + 1);
        int concatenatedNumber = number >= 0 ? 10 * number + VALUES[index] : 10
             * number - VALUES[index];
        ArrayList branch3 = f(sum, concatenatedNumber, index + 1);
        ArrayList results = new ArrayList();
        results.addAll(add(digit, "+", branch1));
        results.addAll(add(digit, "-", branch2));
        results.addAll(add(digit, "", branch3));
        return results;
    }

    public static void main(String[] args) {
        ArrayList list = f(TARGET_SUM, VALUES[0], 1);
        for(int i=0;i<list.size();i++) {
            System.out.println(list.get(i));
        }
    }
}
0
0
分享到:
评论

相关推荐

    JAVA程序设计判断题题库81道

    5. Java程序对计算机硬件平台的依赖性很低。( ) 答案:√ [考点范围] JAVA简介 6. Java可以用来进行多媒体及网络编程。( ) 答案:√ [考点范围] JAVA简介 7. Java语言具有较好的安全性和可移植性及与平台无关等...

    疯狂JAVA讲义课后习题解析

    疯狂JAVA讲义课后习题解析

    java面试题,J2EE面试题 笔试题

    5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、java面试题及答案 9、java面试题编程篇 10、Oracle面试题 11、Oracle企业面试题集锦 12、Spring面试题 13、SSH面试题 14、Strut+Spring+Hibernate...

    Java笔试题大全

    Java 面试题汇总 2 ...Java企业面试题整理集合(5) 74 Java企业面试题整理集合(6) 85 Java企业面试题整理集合(7) 101 E通信公司面试题 104 java面试笔试必考题-抽象类与接口 107 Java面试宝典2011版 112

    JAVA经典50道题

    java非常经典的50道题,可以提高自己的思维逻辑。希望大家可以去下载下来看

    java企业面试题大全(18个文档)

    5、java web面试题.pdf。6、Java基础方面.pdf。7、java集合面试题.pdf。8、Java框架部分面试题.pdf。9、java面接.pdf。10、JAVA面试题集锦1.pdf。11、JAVA面试题集锦2.pdf。12、java算法面试题.pdf。13、程序员面试...

    java 集合练习题

    键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台java 集合练习题

    java程序员初学20道题

    1. Java初学者习题20道 2. 如何看待Java 构造函数的执行 3. 浅谈JDBC的概念理解与学习 4. 用java多线程断点续传实践 5. JDBC连接MySQL数据库关键的四个步骤 6. 对于JSF的一些思考 7. 多核时代考验Java代码编写习惯 8...

    五十道java线程面试题

    五十道java线程面试题,分享出来供大家学习和交流使用,希望大家都能找个好工作

    java笔试算法题40道

    兔子繁殖 半段质数 水仙花数 最大公约数 最小公倍数 数字排序等经典的编程问题

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

    5年java面试题汇总.docx

    5年左右java进阶面试题汇总。包含java基础,数据库,多线程,mybatis,redis,springcloud,Elasticsearch,等技术题。关键是doc格式。

    Java考试机试题

    Java考试机试题,Java和数据库,5个题目Java代码

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    java基础练习题5

    java基础练习题 这是第5套了,值得学习

    java做的考试练习系统--单选题多选题考试练习程序

    Single_choice.java为单选题处理的类 Multiple_choice.java多选题类 Right_or_wrong_question.java判断题类 UserRecord.java为用户记录类 User.tet为用户文件 UserRecord.txt为用户做题记录文件 TestExam.java为做题...

    Java基础50道经典练习题

    Java基础50道经典练习题Java基础50道经典练习题Java基础50道经典练习题

    蓝桥杯-JAVA(历年真题129道)

    蓝桥杯-JAVA(历年真题129道)为推动软件开发技术的发展,促进软件专业技术人才培养,向软件行业输送具有创新能力和实践能力的高端人才,提升高校毕业生的就业竞争力,全面推动行业发展及人才培养进程,工业和信息化...

    JAVA面试题JAVA面试题JAVA面试题JAVA面试题

    五、掌握应答技巧 应答是应聘面试的重头戏,面试者要掌握面试应答技巧。 1、发音清楚掌握节奏 面试时要注意发音清楚,掌握节奏。在回答考官的问题时,毕业生讲话的声音要以坐得最远的考官能够清楚地听到你的回答为...

    Java期末考试题(含答案)

    一、单选择题(每小题2分,共10分) 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A. .java B. .class C. .html D. .exe 2、设 x = 1 , y = ...

Global site tag (gtag.js) - Google Analytics