LeetcCode——剑指Offer21【调整数组使其奇数位于偶数前面】

简介: LeetcCode——剑指Offer21【调整数组使其奇数位于偶数前面】

目录

题目

解题思路

代码详解


题目

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

题目概述:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。

示例:

image.png

基础框架

class Solution{
    public int[] exchange(int[] nums){
    }
}

解题思路

利用双指针求解

代码详解

class Solution{
    public int[] exchange(int[] nums){
        int left=0,right=nums.length-1;
        while(left<right){        //当左右指针相遇时表示完成
            if(nums[left]%2!=0){
                left++;           //当左指针为奇数时,左指针向右边移动
            }else{
                swap(nums,left,right--);//将偶数放在右指针,右指针同时向左移动一位
            }
        }
        return nums;
    }
    public void swap(int[] nums,int left,int right){
        int temp=nums[left];
        nums[left]=nums[right];
        nums[right]=temp;
    }
}

image.png

暴力解法

//左右指针
class Solution{
    public int[] exchange(int[] nums){
        int[] arr =new int[nums.length];
        int left=0;
        int right=nums.length-1;
        for(int i=0;i<nums.length;i++){
            if(nums[i]%2==0){
                arr[right--]=nums[i];
            }else {
                arr[left++]=nums[i];
            }
        }
        return arr;
    }
}
//暴力破解,第一次for循环,放奇数,第二次for循环放偶数
class Solution {
    public int[] exchange(int[] nums) {
        int[] arr = new int[nums.length];
        int ans = 0;
        for(int i = 0;i < arr.length;i++){
            if(nums[i] % 2 != 0){
                arr[ans++] = nums[i];
            }
        }
        for(int i = 0;i < arr.length;i++){
            if(nums[i] % 2 == 0){
                arr[ans++] = nums[i];
            }
        }
        return arr;
    }
}


相关文章
【剑指offer】-调整数组顺序使奇数位于偶数前面-13/67
【剑指offer】-调整数组顺序使奇数位于偶数前面-13/67
|
7月前
|
C++
【一刷《剑指Offer》】面试题 14:调整数组顺序使奇数位于偶数前面
【一刷《剑指Offer》】面试题 14:调整数组顺序使奇数位于偶数前面
|
7月前
【调整奇数偶数顺序】调整数组使奇数全部都位于偶数前面习题集讲解
【调整奇数偶数顺序】调整数组使奇数全部都位于偶数前面习题集讲解
62 1
调整数组使奇数全部都位于偶数前面
调整数组使奇数全部都位于偶数前面
56 0
|
7月前
|
Java
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
66 0
每日一题《剑指offer》数组篇之调整数组顺序使奇数位于偶数前面
|
7月前
剑指Offer LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
剑指Offer LeetCode 面试题21. 调整数组顺序使奇数位于偶数前面
46 0
剑指Offer - 面试题21:调整数组顺序使奇数位于偶数前面
剑指Offer - 面试题21:调整数组顺序使奇数位于偶数前面
55 0
剑指offer_数组---调整数组顺序使奇数位于偶数前面
剑指offer_数组---调整数组顺序使奇数位于偶数前面
59 0
剑指offer 20. 调整数组顺序使奇数位于偶数前面
剑指offer 20. 调整数组顺序使奇数位于偶数前面
58 0
AcWing 32. 调整数组顺序使奇数位于偶数前面
AcWing 32. 调整数组顺序使奇数位于偶数前面
75 0
AcWing 32. 调整数组顺序使奇数位于偶数前面