奇偶分割数组
分割一个整数数组,使得奇数在前偶数在后。
样例
给定 [1, 2, 3, 4]
,返回 [1, 3, 2, 4]
。
我的方法:设定两个数组,分别保存奇偶。使用了额外空间。
时间:340 ms
1 class Solution { 2 public: 3 4 void partitionArray(vector<int> &nums) { 5 // write your code here 6 if (nums.empty()) { 7 return; 8 } 9 vector<int> odd; 10 vector<int> even; 11 int len = nums.size(); 12 for (int i = 0; i < len; i++) { 13 if (nums[i] % 2) { 14 odd.push_back(nums[i]); 15 } else { 16 even.push_back(nums[i]); 17 } 18 } 19 20 for (int i = 0; i < even.size(); i++) { 21 odd.push_back(even[i]); 22 } 23 nums = odd; 24 25 } 26 };
网上别人方法:不使用额外空间。
时间:288 ms
1 class Solution { 2 public: 3 void partitionArray(vector<int> &nums) { 4 int i = 0, j = nums.size() - 1; 5 while (i < j) { 6 if (0 == nums[i] % 2) { 7 int temp = nums[i]; 8 nums[i] = nums[j]; 9 nums[j] = temp; 10 j--; 11 } else { 12 i++; 13 } 14 } 15 return; 16 } 17 };