今天在微信公众号看到一篇“每个程序员半小时内必须解决的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)); } } }
相关推荐
5. Java程序对计算机硬件平台的依赖性很低。( ) 答案:√ [考点范围] JAVA简介 6. Java可以用来进行多媒体及网络编程。( ) 答案:√ [考点范围] JAVA简介 7. Java语言具有较好的安全性和可移植性及与平台无关等...
疯狂JAVA讲义课后习题解析
5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、java面试题及答案 9、java面试题编程篇 10、Oracle面试题 11、Oracle企业面试题集锦 12、Spring面试题 13、SSH面试题 14、Strut+Spring+Hibernate...
Java 面试题汇总 2 ...Java企业面试题整理集合(5) 74 Java企业面试题整理集合(6) 85 Java企业面试题整理集合(7) 101 E通信公司面试题 104 java面试笔试必考题-抽象类与接口 107 Java面试宝典2011版 112
java非常经典的50道题,可以提高自己的思维逻辑。希望大家可以去下载下来看
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、程序员面试...
键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台java 集合练习题
1. Java初学者习题20道 2. 如何看待Java 构造函数的执行 3. 浅谈JDBC的概念理解与学习 4. 用java多线程断点续传实践 5. JDBC连接MySQL数据库关键的四个步骤 6. 对于JSF的一些思考 7. 多核时代考验Java代码编写习惯 8...
五十道java线程面试题,分享出来供大家学习和交流使用,希望大家都能找个好工作
兔子繁殖 半段质数 水仙花数 最大公约数 最小公倍数 数字排序等经典的编程问题
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
5年左右java进阶面试题汇总。包含java基础,数据库,多线程,mybatis,redis,springcloud,Elasticsearch,等技术题。关键是doc格式。
Java考试机试题,Java和数据库,5个题目Java代码
面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...
java基础练习题 这是第5套了,值得学习
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(历年真题129道)为推动软件开发技术的发展,促进软件专业技术人才培养,向软件行业输送具有创新能力和实践能力的高端人才,提升高校毕业生的就业竞争力,全面推动行业发展及人才培养进程,工业和信息化...
五、掌握应答技巧 应答是应聘面试的重头戏,面试者要掌握面试应答技巧。 1、发音清楚掌握节奏 面试时要注意发音清楚,掌握节奏。在回答考官的问题时,毕业生讲话的声音要以坐得最远的考官能够清楚地听到你的回答为...
一、单选择题(每小题2分,共10分) 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。 A. .java B. .class C. .html D. .exe 2、设 x = 1 , y = ...