## 例题
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
提示:
0 <= nums.length <= 50000
0 <= nums[i] <= 10000
var exchange = function(nums) {
let odd = 0, even = nums.length - 1
while (odd < even) {
while (odd < even && (nums[odd] & 1)) odd++
while (odd < even && (nums[even] & 1) === 0) even--
swap(nums, odd++, even--)
}
return nums
};
const swap = (nums, a, b) => {
const t = nums[a]
nums[a] = nums[b]
nums[b] = t
}
var exchange = function(nums) {
let odd = 0, even = nums.length - 1
while (odd < even) {
while (odd < even && (nums[odd] & 1)) odd++
while (odd < even && (nums[even] & 1) === 0) even--
swap(nums, odd++, even--)
}
return nums
};
const swap = (nums, a, b) => { // 加减法交换变量
nums[b] = nums[a] + nums[b] - (nums[a] = nums[b])
}
function exchange(nums: number[]): number[] {
let odd = 0, even = nums.length - 1
while (odd < even) {
while (odd < even && (nums[odd] & 1)) odd++
while (odd < even && (nums[even] & 1) === 0) even--
swap(nums, odd++, even--)
}
return nums
};
function swap(nums: number[], a: number, b: number) {
const t = nums[a]
nums[a] = nums[b]
nums[b] = t
}
class Solution {
function swap(&$a, &$b) { // 交换指针
$t = $a;
$a = $b;
$b = $t;
}
function exchange($nums) {
$odd = 0;
$even = count($nums) - 1;
while ($odd < $even) {
while ($odd < $even && ($nums[$odd] & 1)) $odd++;
while ($odd < $even && ($nums[$even] & 1) === 0) $even--;
$this->swap($nums[$odd++], $nums[$even--]);
}
return $nums;
}
}
class Solution {
function exchange($nums) { // list 与 array 交换
$odd = 0;
$even = count($nums) - 1;
while ($odd < $even) {
while ($odd < $even && ($nums[$odd] & 1)) $odd++;
while ($odd < $even && ($nums[$even] & 1) === 0) $even--;
list($nums[$odd], $nums[$even]) = array($nums[$even], $nums[$odd]);
$even--;
$odd++;
}
return $nums;
}
}
func swap(a *int, b *int) { // 交换指针 + 临时变量
t := *a;
*a = *b;
*b = t;
}
func exchange(nums []int) []int {
odd, even := 0, len(nums) - 1
for odd < even {
for odd < even && nums[odd] & 1 == 1 {
odd++
}
for odd < even && nums[even] & 1 == 0 {
even--
}
swap(&nums[odd], &nums[even])
odd++
even--
}
return nums
}
func swap(a, b *int) { // 交换指针
*a, *b = *b, *a
}
func exchange(nums []int) []int {
odd, even := 0, len(nums) - 1
for odd < even {
for odd < even && nums[odd] & 1 == 1 {
odd++
}
for odd < even && nums[even] & 1 == 0 {
even--
}
swap(&nums[odd], &nums[even])
odd++
even--
}
return nums
}
func exchange(nums []int) []int { // 直接交换
odd, even := 0, len(nums) - 1
for odd < even {
for odd < even && nums[odd] & 1 == 1 {
odd++
}
for odd < even && nums[even] & 1 == 0 {
even--
}
nums[odd], nums[even] = nums[even], nums[odd]
}
return nums
}
class Solution {
public int[] exchange(int[] nums) {
int odd = 0, even = nums.length - 1;
while (odd < even) {
while (odd < even && (nums[odd] & 1) == 1) odd++;
while (odd < even && (nums[even] & 1) == 0) even--;
swap(nums, odd++, even--);
}
return nums;
}
public void swap(int[] nums, int a, int b) {
int t = nums[a];
nums[a] = nums[b];
nums[b] = t;
}
}
public class Solution {
public int[] Exchange(int[] nums) {
int odd = 0, even = nums.Length - 1;
while (odd < even) {
while (odd < even && (nums[odd] & 1) == 1) odd++;
while (odd < even && (nums[even] & 1) == 0) even--;
swap(nums, odd++, even--);
}
return nums;
}
public void swap(int[] nums, int a, int b) {
int t = nums[a];
nums[a] = nums[b];
nums[b] = t;
}
}
void swap(int* a, int* b) { // 交换指针
int t = *a;
*a = *b;
*b = t;
}
int* exchange(int* nums, int numsSize, int* returnSize){
int odd = 0, even = numsSize - 1;
while (odd < even) {
while (odd < even && (nums[odd] & 1) == 1) odd++;
while (odd < even && (nums[even] & 1) == 0) even--;
swap(nums + odd++, nums + even--);
}
*returnSize = numsSize;
return nums;
}
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int odd = 0, even = nums.size() - 1;
while (odd < even) {
while (odd < even && nums[odd] & 1) odd++;
while (odd < even && (nums[even] & 1) == 0) even--;
swap(nums[odd], nums[even]);
}
return nums;
}
};
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
odd, even = 0, len(nums) - 1
while odd < even:
while odd < even and nums[odd] & 1: odd += 1
while odd < even and nums[even] & 1 == 0: even -= 1
nums[odd], nums[even] = nums[even], nums[odd]
return nums
var exchange = function(nums) {
const n = nums.length
let odd = 0
for (let i = 0; i < n; i++) {
if (nums[i] & 1) swap(nums, i, odd++)
}
return nums
};
const swap = (nums, a, b) => {
const t = nums[a]
nums[a] = nums[b]
nums[b] = t
}
var exchange = function(nums) {
const n = nums.length
let odd = 0
for (let i = 0; i < n; i++) {
if (nums[i] & 1) swap(nums, i, odd++)
}
return nums
};
const swap = (nums, a, b) => { // 加减法交换变量
nums[b] = nums[a] + nums[b] - (nums[a] = nums[b])
}
function exchange(nums: number[]): number[] {
const n = nums.length
let odd = 0
for (let i = 0; i < n; i++) {
if (nums[i] & 1) swap(nums, i, odd++)
}
return nums
};
function swap(nums: number[], a: number, b: number) {
const t = nums[a]
nums[a] = nums[b]
nums[b] = t
}
class Solution {
function swap(&$a, &$b) { // 交换指针
$t = $a;
$a = $b;
$b = $t;
}
function exchange($nums) {
$odd = 0;
foreach ($nums as $i => $num) {
if ($num & 1) $this->swap($nums[$i], $nums[$odd++]);
}
return $nums;
}
}
class Solution {
function exchange($nums) { // list 与 array 交换
$odd = 0;
foreach($nums as $i => $num) {
if ($num & 1) {
list($nums[$i], $nums[$odd]) = array($nums[$odd], $num);
$odd++;
}
}
return $nums;
}
}
func swap(a, b *int) { // 交换指针 + 临时变量
t := *a
*a = *b
*b = t
}
func exchange(nums []int) []int {
odd := 0
for i, num := range nums {
if num & 1 == 1 {
swap(&nums[i], &nums[odd])
odd++
}
}
return nums
}
func swap(a, b *int) { // 交换指针
*a, *b = *b, *a
}
func exchange(nums []int) []int {
odd := 0
for i, num := range nums {
if num & 1 == 1 {
swap(&nums[i], &nums[odd])
odd++
}
}
return nums
}
func exchange(nums []int) []int { // 直接交换
odd := 0
for i, num := range nums {
if num & 1 == 1 {
nums[i], nums[odd] = nums[odd], nums[i]
odd++
}
}
return nums
}
class Solution {
public int[] exchange(int[] nums) {
int n = nums.length, odd = 0;
for (int i = 0; i < n; i++) {
if ((nums[i] & 1) == 1) swap(nums, i, odd++);
}
return nums;
}
public void swap(int[] nums, int a, int b) {
int t = nums[a];
nums[a] = nums[b];
nums[b] = t;
}
}
public class Solution {
public int[] Exchange(int[] nums) {
int n = nums.Length, odd = 0;
for (int i = 0; i < n; i++) {
if ((nums[i] & 1) == 1) swap(nums, i, odd++);
}
return nums;
}
public void swap(int[] nums, int a, int b) {
int t = nums[a];
nums[a] = nums[b];
nums[b] = t;
}
}
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int* exchange(int* nums, int numsSize, int* returnSize){
int odd = 0;
for (int i = 0; i < numsSize; i++) {
if ((nums[i] & 1) == 1) swap(nums + i, nums + odd++);
}
*returnSize = numsSize;
return nums;
}
class Solution {
public:
vector<int> exchange(vector<int>& nums) {
int n = nums.size(), odd = 0;
for (int i = 0; i < n; i++) {
if ((nums[i] & 1) == 1) swap(nums[i], nums[odd++]);
}
return nums;
}
};
class Solution:
def exchange(self, nums: List[int]) -> List[int]:
odd = 0
for i, num in enumerate(nums):
if num & 1:
nums[i], nums[odd] = nums[odd], nums[i]
odd += 1
return nums