class Solution {
public int[] exchange(int[] nums) {
//双指针 从中间开始 感觉跟快排一样
int left = 0;
int right = nums.length-1;
if(nums.length==0)
{
return nums;
}
int end =nums[right];
int temp;
while(left<right)
{
while(left<right&&nums[left]%2==1)
{
left++;
}
nums[right]=nums[left];
while(left<right&&nums[right]%2==0)
{
right--;
}
nums[left]=nums[right];
}
nums[left]=end;
return nums;
}
//空间复杂度比较高 比骄容易想到
public int[] exchange(int[] nums) {
int[] res = new int[nums.length];
List<Integer> odd = new ArrayList<>();
List<Integer> even = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
if (nums[i]%2 == 0) {
even.add(nums[i]);
} else if (nums[i]%2 == 1) {
odd.add(nums[i]);
}
}
for (int i = 0; i < odd.size(); i++) {
res[i] = odd.get(i);
}
for (int i = 0; i < even.size(); i++) {
res[i+odd.size()] = even.get(i);
}
return res;
}
共以下 16 个回答
c++ 代码 先分开 奇数偶数分别排序 exchange(vector & nums) q,o,cur;
class Solution {
public:
vector
{
vector
for(int i=0;i<nums.size();i++)
{
if(nums[i]%2)
q.push_back(nums[i]);
else
o.push_back(nums[i]);
}
sort(q.begin(),q.end());
sort(o.begin(),o.end());
for(int i=0;i<q.size();i++)
cur.push_back(q[i]);
for(int i=0;i<o.size();i++)
cur.push_back(o[i]);
return cur;
}
};
遍历两编
“`c++ exchange(vector & nums) { s=nums;
//双指针
class Solution {
public:
vector
vector
if(nums.size()<=1) return s; int l=0,r=s.size()-1; while(l
class Solution {
public int[] exchange(int[] nums) {
//双指针 从中间开始 感觉跟快排一样
}
类似快速排序的思想
快排思想
快排思想
7.31
Day22:下面是代码