@author: sdubrz
@date: 7/25/2020 9:59:53 AM
难度: 简单
考察内容: 数组
@e-mail: lwyz521604#163.com
题目来自《剑指offer》 电子工业出版社
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
示例:
输入:nums = [1,2,3,4]
输出:[1,3,2,4]
注:[3,1,2,4] 也是正确的答案之一。
提示:
- 1 <= nums.length <= 50000
- 1 <= nums[i] <= 10000
通过次数41,445提交次数64,453
解法
class Solution {
public int[] exchange(int[] nums) {
if(nums.length<2) {
return nums;
}
int pre = 0;
int back = nums.length-1;
while(pre<back) {
while(pre<nums.length &&nums[pre]%2==1) { // 从前往后找偶数
pre++;
}
while(back>=0 &&nums[back]%2==0) { // 从后往前找奇数
back--;
}
if(pre<back) {
int a = nums[pre];
nums[pre] = nums[back];
nums[back] = a;
}
}
return nums;
}
}
在LeetCode系统中提交的结果为
执行结果:通过 显示详情
执行用时:2 ms, 在所有 Java 提交中击败了99.82%的用户
内存消耗:47.6 MB, 在所有 Java 提交中击败了100.00%的用户