1. 程式人生 > 其它 >2.面向物件基礎-04繼承

2.面向物件基礎-04繼承

1. 題目

輸入一個整數陣列,實現一個函式來調整該陣列中數字的順序,使得所有奇數位於陣列的前半部分,所有偶數位於陣列的後半部分。

2. 示例

輸入:nums = [1,2,3,4]
輸出:[1,3,2,4] 
注:[3,1,2,4] 也是正確的答案之一。

3. 題解

雙指標法:

  • 判斷是否符合左邊奇數右邊偶數
  • 完全相反,交換
  • 左右都為偶數,右指標左移
  • 左右都為奇數,左指標左移
  • 左奇數右偶數,左指標右移,右指標左移

4. 實現

 1 public class Exchange21 {
 2     // 雙指標
 3     public int[] exchange(int[] nums) {
4 int left = 0, right = nums.length - 1; 5 while (left < right) { 6 // 左邊為偶數,右邊為基數交換 7 if(nums[left] % 2 == 0 && nums[right] % 2 == 1) { 8 int temp = nums[left]; 9 nums[left] = nums[right]; 10 nums[right] =temp;
11 } 12 // 左邊為偶數,右邊為偶數 13 else if(nums[left] % 2 == 0) { 14 right--; 15 } 16 // 左邊為奇數,右邊為偶數 17 else if(nums[right] % 2 == 1) { 18 left++; 19 } 20 // 左邊為奇數,右邊為偶數 21 else
{ 22 left++; 23 right--; 24 } 25 } 26 return nums; 27 } 28 29 public static void main(String[] args) { 30 int[] nums = {1, 2, 3, 4}; 31 int[] num = new Exchange21().exchange(nums); 32 for(int i = 0; i < num.length; i++) { 33 System.out.println(num[i]); 34 } 35 } 36 }

5. 結語

  努力去愛周圍的每一個人,付出,不一定有收穫,但是不付出就一定沒有收穫! 給街頭賣藝的人零錢,不和深夜還在擺攤的小販討價還價。願我的部落格對你有所幫助(*^▽^*)(*^▽^*)!

  如果客官喜歡小生的園子,記得關注小生喲,小生會持續更新(#^.^#)(#^.^#)。

但行好事 莫問前程