1. 程式人生 > >java基礎演算法——交錯合併陣列元素

java基礎演算法——交錯合併陣列元素

為什麼突然想寫這個,只因讀了下邊某位大佬的一段話!

如果你應聘的是“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; } }