Jianzhi offer 21. Adjust the array order so that the odd numbers are in front of the even numbers

Jianzhi offer 21. Adjust the array order so that the odd numbers are in front of the even numbers

Title description

Insert picture description here

Problem-solving ideas

Double pointer

nums[0...oddIndex]Store odd numbers, nums[evenIndex...nums.length - 1]store even numbers

class Solution {
    
    
    public int[] exchange(int[] nums) {
    
    
        if (nums == null || nums.length == 0) return nums;
        //双指针,nums[0...oddIndex]存奇数,nums[evenIndex...nums.length - 1]存偶数
        int oddIndex = 0, evenIndex = nums.length - 1;

        while (oddIndex < evenIndex) {
    
    
            //如果是偶数的话,那就交换
            if ((nums[oddIndex] & 0x01) == 0) {
    
    
                int temp = nums[oddIndex];
                nums[oddIndex] = nums[evenIndex];
                nums[evenIndex] = temp;
                evenIndex--;   //偶数指针移动
            } else {
    
    
                //如果是奇数的话,不用交换,直接移动指针
                oddIndex++;
            }
        }
        return nums;
    }
}

Guess you like

Origin blog.csdn.net/cys975900334/article/details/115014347