2.面向物件基礎-04繼承
阿新 • • 發佈:2021-06-30
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. 結語
努力去愛周圍的每一個人,付出,不一定有收穫,但是不付出就一定沒有收穫! 給街頭賣藝的人零錢,不和深夜還在擺攤的小販討價還價。願我的部落格對你有所幫助(*^▽^*)(*^▽^*)!
如果客官喜歡小生的園子,記得關注小生喲,小生會持續更新(#^.^#)(#^.^#)。
但行好事 莫問前程