输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
1 # -*- coding:utf-8 -*- 2 class Solution: 3 def reOrderArray(self, array): 4 n = len(array) 5 i = 0 6 while i < n: 7 if array[i] % 2 == 1: 8 i += 1 9 continue 10 j = i + 1 11 while j < n: 12 if array[j] % 2 == 1: 13 break 14 j += 1 15 if j == n: 16 return array 17 temp = array[j] 18 for k in range(j,i,-1): 19 array[k] = array[k-1] 20 array[i] = temp 21 i = i+1 22 return array 23 # write code here
补充Java的实现:
1 class Solution { 2 public int[] exchange(int[] nums) { 3 int n = nums.length; 4 int i = 0, j = n - 1; 5 while (i < j) { 6 while (i < n && nums[i] % 2 == 1) { 7 i++; 8 } 9 while (j >= 0 && nums[j] % 2 == 0) { 10 j--; 11 } 12 if (i < j) { 13 int temp = nums[i]; 14 nums[i] = nums[j]; 15 nums[j] = temp; 16 i++; 17 j--; 18 } 19 if (i >= j) { 20 break; 21 } 22 } 23 return nums; 24 } 25 }