训练计划I(调整数组顺序使奇数位于偶数前面),剑指offer,力扣

题目地址:

LCR 139. 训练计划 I - 力扣(LeetCode)

目录

我们直接看题解吧:

审题目+事例+提示:

思路流程(双指针/快排):

代码:

代码(单循环):

今天刷训练计划I(调整数组顺序使奇数位于偶数前面),大家有兴趣可以点上看看题目要求,试着做一下

我们直接看题解吧:

审题目+事例+提示:

未要求不可原地更改数组

思路流程(双指针/快排):

  1. 创建lef和rig两个指针,分别指向数组两端
  2. 多循环:

          ·左边指针循环遇到奇数自动跳过,即lef++

         ·右边指针循环遇到偶数自动跳过,即rig--

         ·当lef指向偶数,rig指向奇数时,互相交换

    3、返回修改后数组

代码:

class Solution {
    public int[] trainingPlan(int[] actions) {
        int i = 0, j = actions.length - 1, tmp;
        while(i < j) {
            while(i < j && (actions[i] & 1) == 1) i++;
            while(i < j && (actions[j] & 1) == 0) j--;
            tmp = actions[i];
            actions[i] = actions[j];
            actions[j] = tmp;
        }
        return actions;
    }
}

代码(单循环):

class Solution {
    public int[] exchange(int[] nums) {
        
        //定义头指针left
        int left = 0;
        //定义尾指针right
        int right = nums.length-1;
        //定义临时变量temp
        int temp;
 
        //移动left和right,直到left在right右侧或相遇为止
        while(left 

你可能感兴趣的:(剑指offer,#,数组,力扣300+,leetcode,算法,职场和发展)