JS代码题18

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

输入:nums = [1,2,3,4]
输出:[1,3,2,4] 
注:[3,1,2,4] 也是正确的答案之一。

代码:

var exchange = function(nums) {
    if (!nums.length) return nums
    var l = 0
    var r = nums.length-1
    while(l<r){
        if(nums[l]%2 !== 0){
            l++
        }else{
            var temp = nums[l]
            nums[l] = nums[r]
            nums[r] = temp
            r--
        }
    }
    return nums
};

利用快排的思想,设置左右两个指针。
不过要注意只能以一个指针为基础来判断,另一个指针用来在交换数值后,缩小查找范围

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...
    BookThief阅读 5,860评论 0 2
  • 1.二维数组的查找 题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一...
    少年梦游计_3403阅读 4,862评论 0 1
  • 说明: 本文中出现的所有算法题皆来自牛客网-剑指Offer在线编程题,在此只是作为转载和记录,用于本人学习使用,不...
    秋意思寒阅读 4,840评论 1 1
  • 开个新坑,准备校招研发岗面试,基本的算法还是要过关的。 写在前面 本系列包含《剑指Offer》66道算法题,预计一...
    机盐Johnny阅读 10,339评论 0 12
  • 1、滑动窗口的最大值 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4...
    qsmyksny阅读 3,352评论 0 0