zoukankan      html  css  js  c++  java
  • 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 双指针

    地址 https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/

    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
    
    示例:
    输入:nums = [1,2,3,4]
    输出:[1,3,2,4] 
    注:[3,1,2,4] 也是正确的答案之一。
     
    提示:
    1 <= nums.length <= 50000
    1 <= nums[i] <= 10000
    
     

    解法

    使用双指针 找到第一个偶数  逆序找到最后一个奇数,然后交换。直到指针相交

    class Solution {
    public:
        vector<int> exchange(vector<int>& nums) {
            int l = 0; int r = nums.size()-1;
            while(l<r){
                while(l<nums.size()&& nums[l]%2==1) l++;
                while(r>=0&& nums[r]%2==0) r--;
                if(l<r)swap(nums[l],nums[r]);
            }
            
            return nums;
        }
    };
  • 相关阅读:
    过河卒 题解
    You Are the One solution
    D
    Find a way solution
    A
    入门训练 Fibonacci数列
    求平均成绩 题解
    海选女主角 题解
    子集生成和组合问题
    log4j
  • 原文地址:https://www.cnblogs.com/itdef/p/14274887.html
Copyright © 2011-2022 走看看