Partition an integers array into odd number first and even number second.
Example
Example 1:
Input: [1,2,3,4]
Output: [1,3,2,4]
Example 2:
Input: [1,4,2,3,5,6]
Output: [1,3,5,4,2,6]
Challenge
Do it in-place.
Notice
The answer is not unique. All you have to do is give a vaild answer.
Code (Java):1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public class Solution { /* * @param nums: an array of integers * @return: nothing */ public void partitionArray( int [] nums) { if (nums == null || nums.length < 2 ) { return ; } int start = 0 ; int end = nums.length - 1 ; while (start <= end) { while (start <= end && (nums[start] % 2 == 1 )) { start++; } while (start <= end && (nums[end] % 2 == 0 )) { end--; } if (start <= end) { swap(nums, start, end); start++; end--; } } } private void swap( int [] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; } } |
No comments:
Post a Comment