Partition an integers array into odd number first and even number second.

剑指offer的一道题,把所有奇数移动到偶数前面,其实是partition的双端解法,利用双指针。先检测两边合格的元素,都不合格,则交换,继续。

需要注意的是:

1.移动时,防止全部是偶数或者全部是奇数的情况,防止移动时越界。

2.交换时,仍然需要防止越界,全奇数或者全偶数,则left== right, 此时不应该交换。

3.注意判断奇偶时,利用位运算 &0x1(python 1)也可以。可以加速。

代码如下:

class Solution:# @param nums: a list of integers# @return: nothingdef partitionArray(self, nums):if not nums or len(nums) == 1:return left = 0right = len(nums) - 1while left < right:while left < right and nums[left] & 0x1 == 1:left += 1while left < right and nums[right] & 0x1 == 0:right -=1if left < right:nums[left],nums[right] = nums[right],nums[left]left += 1right -= 1return 

转载于:https://www.cnblogs.com/sherylwang/p/5745740.html

Partition Array by Odd and Even相关推荐

  1. LintCode 373: Partition Array

    LintCode 373: Partition Array 题目描述 分割一个整数数组,使得奇数在前偶数在后. 样例 给定[1, 2, 3, 4],返回[1, 3, 2, 4]. Thu Feb 23 ...

  2. Array with Odd Sum CodeForces - 1296A

    You are given an array aa consisting of nn integers. In one move, you can choose two indices 1≤i,j≤n ...

  3. [Swift]LeetCode1013. 将数组分成和相等的三个部分 | Partition Array Into Three Parts With Equal Sum...

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. Array with Odd Sum(CF-1296A)

    Problem Description You are given an array a consisting of n integers. In one move, you can choose t ...

  5. [Swift]LeetCode1043. 分隔数组以得到最大和 | Partition Array for Maximum Sum

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  6. [Algorithm]九章七:Two Pointer

    604. Window Sum:点击打开链接 例如:[1,2,7,8,5], k=3 sum[0]=nums[0]+nums[1]+nums[2]=10 sum[1]=sum[0]-nums[0]+n ...

  7. java array 元素的位置_数据结构与算法:动态图解十大经典排序算法(含JAVA代码实现)...

    点击上方"JAVA",星标公众号 重磅干货,第一时间送达 本文将采取动态图+文字描述+正确的java代码实现来讲解以下十大排序算法: 冒泡排序 选择排序 插入排序 希尔排序 归并排 ...

  8. 快排的两种partition函数

    partition函数就是快排的关键部分,作用是将数组划分成两部分,左边小于基数,右边大于基数 但实际上它也不仅仅用于快排,在求top(K)问题中也常常会用到. 下面介绍两种partition函数,他 ...

  9. 《剑指offer》Partition函数及其Partition函数周边

      Partion函数最早出现于快速排序算法,但其代表的分治思想,在<剑指offer>这本书中求数组中位数(面试题39,数组中出现次数超过一半的数字)中也有所涉及,将其汇总在一起,称之为P ...

最新文章

  1. java - 通用 CRUD(增、删、改、查)工具类,代码高效复用
  2. mac安装和使用boost库
  3. 国家计算机科学进展,主动网络安全的研究与进展
  4. sstream和strstream以及fstream
  5. mysql导出oracle_如何将mysql中的表结构导出放入oracle中
  6. docker 容器的常用命令及配置
  7. Python pandas使用
  8. Jrebel激活方法
  9. 数据-第16课-栈的应用实战二
  10. 操作系统——I/O设备
  11. JS字符串转换为JSON的四种方法
  12. 软考中级网络工程师证书如何查询?
  13. 易班显示不能连接到服务器检查网络,易班站内应用、轻应用、网站接入、移动应用的区别...
  14. 【Gitee】本地push代码成功,但是不计入贡献度贡献值,该怎么处理(已解决 同理github gitlab)
  15. 基于Springboot拦截器的AES报文解密
  16. 兴华苑社区关爱空巢老人社会实践
  17. 解决RuntimeError: stack expects a non-empty Tensorlist问题
  18. 【社区分享】专注移动端机器学习交流,TensorFlow Lite 中文兴趣小组招募中!
  19. python定界符有哪些_Python字符串
  20. 都1202年,我才知道 Tailwindcss

热门文章

  1. 无法打开、创建WEB项目,VS2003有寄生性?
  2. RabbitMq(二) Connection、Channels、Exchanges、Queues 等基本概念介绍
  3. Netty 服务 接收新数据
  4. (干货!)Tomcat性能优化
  5. MySQL高并发事务问题
  6. centos 卸载vsftp
  7. centos 搭建php运行环境
  8. 实战系列-使用Mybatis-Plus生成器生成代码
  9. Spring Boot:Exception parsing document: template=index, line 7 - column 3
  10. 年底了,按约定把2021 Go面试八股整理全了