java基础算法——交错合并数组元素

来源:互联网 发布:淘宝站外活动有哪些 编辑:程序博客网 时间:2024/05/17 22:50

为什么突然想写这个,只因读了下边某位大佬的一段话!

如果你应聘的是“Web前端开发”岗位,那么你只懂jQuery也可以胜任,那么,“软件工程师”是不是就意味着会HTML、JavaScript和CSS这些必备技能就行了呢?

你真的会写代码吗?

对于应聘程序员的求职人员,我,作为用人单位,首先希望的是你会写代码。我指的是真正的代码:我给你一个问题,你使用任何你觉得舒适的编程语言给出它的解决方案。

你真的能做到这一点吗?

策略:如果你不能在1小时以内解决以下5个问题,那么你首先要做的是重新审视自己。的确,或许你各方面的工作都干的不错,但是我依然觉得你现在还不配“软件工程师(或程序员,计算机科学专家,甚至是“开发人员”)”这个头衔。不要自欺欺人,先花点时间来调整你的重点吧。

话中提到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。
    Ps:点击这里,阅读我的解决方案。
  • 问题5 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。
    例如:1+ 2 + 34 – 5 + 67 – 8 + 9 = 100。

这里来研究下问题2,也没什么多说的。

以下为代码!自己回去执行研究研究

package com.demo;import java.util.Arrays;public class suanfa1 {    //编写一个交错合并列表元素的函数。例如:给定的两个列表为[a,B,C]和[123],函数返回[a,1,B,2,C,3]。    public static void main(String[] args) {        String[] arr1 = { "A", "B", "C", "D", "E" };        String[] arr2 = { "!", "@", "#", "$", "%" };               String[] arr = getCrossMergeList(arr1, arr2);        System.out.println(Arrays.toString(arr));    }    private static String[] getCrossMergeList(String[] arr1, String[] arr2) {        int i;        int j;        // 既然是合并,那首先确定 newArr[] 的长度,既然是交错,那必然序号要奇偶分开        String[] newArr = new String[arr1.length + arr2.length];//newArr[0,1,2,3,4,5....]        for (i = 0, j = 0; i < arr1.length; i++) {            j = 2 * i;//偶数位--arr1            if (j > 2 * arr2.length)                j = arr2.length + i;            newArr[j] = arr1[i];//newArr[0,2,4....]        }        for (i = 0, j = 0; i < arr2.length; i++) {            j = 2 * i + 1;//奇数位--arr2            if (j > 2 * arr1.length)                j = arr1.length + i;            newArr[j] = arr2[i];//newArr[1,3,5....]        }        return newArr;    }}

原创粉丝点击