JZ21 調整陣列順序使奇數位于偶數前面(一)
描述
輸入一個長度為 n 整數陣列,實作一個函式來調整該陣列中數字的順序,使得所有的奇數位于陣列的前面部分,所有的偶數位于陣列的后面部分,并保證奇數和奇數,偶數和偶數之間的相對位置不變,
思路:
既然要把所有的奇數放在陣列前面,所有的偶數放在陣列后面,那可以統計奇數在原陣列中出現了多少次,這樣就可以找到二者的分界線,
有了分界線以后,前面就是奇數,后面就是偶數,可以利用兩個指標分別指向二者的開頭,遇到一個元素就添加到相應位置,然后指標移動,
具體做法:
step 1:遍歷陣列,統計奇數出現的次數,即找到了偶數開始的位置,
step 2:準備一個和原陣列同樣長的新陣列承接輸出,準備雙指標,x指向奇數開始的位置,y指向偶數開始的位置,
step 3:遍歷原陣列,遇到奇數添加在指標x后面,遇到偶數添加在指標y后面,直到遍歷結束,
代碼
package mid.JZ21調整陣列順序使奇數位于偶數前面1;
import jdk.nashorn.internal.ir.CallNode;
import sun.awt.geom.AreaOp;
import java.util.*;
public class Solution {
/**
* 代碼中的類名、方法名、引數名已經指定,請勿修改,直接回傳方法規定的值即可
*
* @param array int整型一維陣列
* @return int整型一維陣列
*/
public int[] reOrderArray(int[] array) {
// write code here
if (array == null || array.length == 0) return new int[0];
int[] res = new int[array.length];
int right = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) != 0) right++;
}
int left = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) == 0) {
res[right] = array[i];
right++;
} else {
res[left] = array[i];
left++;
}
}
return res;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538904.html
標籤:Java
