※ 引述《Rushia (みけねこ的鼻屎)》之銘言:
: https://leetcode.com/problems/sort-array-by-parity/description
: 905. Sort Array By Parity
: 給你一個整數陣列 nums,返回排序完的 nums,這個陣列的左邊都是偶數右邊都是奇數。
: 思路:
: 1.用雙指標來處理,如果左邊的數字是偶數則左邊指標往右,如果右邊數字是奇數則右邊
: 指標往左,如果左邊是奇數右邊是偶數則交換兩邊的數並兩邊同時縮小。
思路:
1. 同上雙指標,不過設定終止條件:
a. 左邊的指標是奇數
b. 右邊的指標是偶數
a || b 為真 => 交換兩者
否則 => 指標繼續走
Code:
impl Solution {
pub fn sort_array_by_parity(nums: Vec<i32>) -> Vec<i32> {
let mut result = nums.clone();
let mut left = 0;
let mut right = result.len() - 1;
while left < right {
while (left < right) && (result[left] & 1 == 0) {
left += 1;
}
while (left < right) && (result[right] & 1 == 1) {
right -= 1;
}
if left < right {
result.swap(left, right);
}
}
result
}
}