资讯专栏INFORMATION COLUMN

【刷算法】调整数组顺序使奇数位于偶数

venmos / 1094人阅读

摘要:题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

分析

看题目要求是保证奇数和奇数,偶数和偶数之间的相对位置不变,且肯定要移动部分元素,所以可以联想到冒泡排序的思想,不过时间复杂度O(n^2)略高,但是空间复杂度是O(1)。

另一种思路,开辟一个新数组,遍历旧数组,遇到奇数就从旧数组append到新数组,遍历完毕之后再把旧数组中剩下的偶数全append到新数组。

实现

冒泡思想实现

function reOrderArray(a)
{
   if(a === null || a.length === 0)
        return [];
        for(var i = a.length; i > 0;i--){
        for(var j = 0;j <= i-1;j++) {
            if(a[j]%2===0&&a[j+1]%2===1){
                var temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }
    return a;
}

开辟新数组实现

function reOrderArray(a)
{
   if(a === null || a.length === 0)
        return [];
    var res = [];
    var cur = 0;
    while(cur < a.length){
        if(a[cur]%2 === 1){
            res.push(a.splice(cur, 1));
        }else{
            cur++;
        }
    }
    
    return res.concat(a);
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95769.html

相关文章

  • 【剑指offer】10.程序的完整性

    摘要:题目数值的整数次方给定一个类型的浮点数和类型的整数。思路这道题逻辑上很简单,但很容易出错。关键是要考虑全面,考虑到所有情况。是正,负,的情况为的情况。 题目1 数值的整数次方 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路 这道题逻辑上很简单,但很容易出错。 关键是要考虑全面,考虑到所有情况。 exponent 是正...

    kid143 评论0 收藏0
  • 用React写一个数字华容道,你需要知道的秘密

    摘要:还在上班很无聊数字华容道畅玩地址开发源码地址这个叫前言年末了。光随机生成一个乱序数列是不够的,还得保证这个数列的逆序数为偶数,嗦嘎。所以,我们直接将交换的次数,记为数列逆序数个数,就达到了想要的效果。 还在上班?很无聊?数字华容道畅玩地址 开发源码地址 这个叫前言 年末了。哦,不,要过年了。以前只能一路站到公司的我,今早居然是坐着过来的。新的一年,总要学一个新东西来迎接新的未来吧,所以...

    Jason 评论0 收藏0
  • ❤️思维导图整理大厂面试高频数组10: 3种方法彻底解决中位数问题, 力扣4❤️

    此专栏文章是对力扣上算法题目各种方法的总结和归纳, 整理出最重要的思路和知识重点并以思维导图形式呈现, 当然也会加上我对导图的详解. 目的是为了更方便快捷的记忆和回忆算法重点(不用每次都重复看题解), 毕竟算法不是做了一遍就能完全记住的. 所以本文适合已经知道解题思路和方法, 想进一步加强理解和记忆的朋友, 并不适合第一次接触此题的朋友(可以根据题号先去力扣看看官方题解, 然后再看本文内容). 关...

    XanaHopper 评论0 收藏0
  • 小李飞刀:做题第十一弹!

    摘要:第五题对称二叉树难度简单给定一个二叉树,检查它是否是镜像对称的。第十六题最大连续的个数难度简单给定一个二进制数组,计算其中最大连续的个数。第十八题平方数之和难度简单给定一个非负整数,你要判断是否存在两个整数和,使得。 写在前面 最近忙着调教新装备,没有及时的写题解,但是没有在偷懒没刷题喔~来认真整理下最近做的题目~ 之前考虑按tag来刷题,后来收到了推荐的leetcode题解,就根据上...

    ytwman 评论0 收藏0
  • 我的面试准备过程--容器(更新中)

    摘要:底层实现是对象数组,优点是时间为,缺点是和时间为,需要留意的是扩容的过程以及的算法本节参考源码中放最新的源码为,组成链表或红黑树定义从整体上看,底层的存储结构是基于数组和链表实现的。实现了所谓的线程安全,在很多方法上都加上了。 ArrayList ArrayList底层实现是对象数组,优点是set、get时间为O(1),缺点是add和remove时间为O(n),需要留意的是扩容的过程以...

    zhisheng 评论0 收藏0

发表评论

0条评论

venmos

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<