给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。

对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。

你可以返回任何满足上述条件的数组作为答案。

示例:

输入:[4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。

提示:

  1. 2 <= A.length <= 20000
  2. A.length % 2 == 0
  3. 0 <= A[i] <= 1000

有两种思路,一种是设置一个新的数组,在其中偶数位和计数位各设置一个指针,遍历源数组并插入满足的内容。

一种是在源数组维持两个指针,一个奇数一个偶数,当遇到不满足的时候,进行置换,并以此类推。

由于学习了Python 3,故本题使用Python 用作练习。

代码如下:

(第一种思路)

class Solution:
def sortArrayByParityII(self, A: List[int]) -> List[int]:
blist = []
index1 = 0
index2 = 1
for i in A:
if (i&1 == 0):
blist.insert(index1, i)
index1 += 2
else:
blist.insert(index2, i)
index2 += 2
return blist

(第二种思路在Python中无法实现,因为定义的"List"类型似乎无法更改内部的值,但是思路是正确的)

(我是Python初学者,所以请原谅,但是还是放出 无法AC 的代码,以供参考)

"""思路是正确的,但是无法AC,因为无法修改A的值,返回的A没办法改动"""

class Solution:
def sortArrayByParityII(self, A: List[int]) -> List[int]:
index1 = 0
index2 = 1
while (index1 < len(A) & index2 < len(A)):
if (A[index1] & 1==0):
index1 += 2
else:
tmp = A[index2]
A[index2] = A[index1]
A[index1] = tmp
index2 += 2
return A

最新文章

  1. LALR(1)语法分析生成器--xbytes
  2. java读取本地properties文件
  3. openid4java 使用记录[转载]
  4. C# Java 3DES加密解密 扩展及修正\0 问题
  5. Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
  6. linux学习方法之一
  7. Jquery 插件初学习
  8. Redis 集成Spring(spring-data-redis)
  9. 让横向ul在页面中水平居中的方法
  10. Java异常简介、异常捕获还是上抛总结
  11. 一键安装Cloud Torrent
  12. [emacs] emacs调整C代码的缩进格式等
  13. C#路径中获取文件全路径、目录、扩展名、文件名称
  14. IdentityServer4【Topic】之登陆注册
  15. python异常提示表
  16. 如何删除WINDOWS中服务中不再使用的服务?
  17. typedef在C和C++的区别?
  18. 20145330 《网络对抗》 Web安全基础实践
  19. Spring容器中bean的生命周期以及关注spring bean对象的后置处理器:BeanPostProcessor(一个接口)
  20. lumen 使用 dingo API 在 phpunit 中 404 的解决方法, 以及鉴权问题

热门文章

  1. NDN helper 学习记录
  2. POJ 3080 Blue Jeans(串)
  3. SpringCloud之RefreshScope 源码解读
  4. e.target与事件委托简例(原生和jQuery的区别)
  5. nuxt.js部署vue应用到服务端过程
  6. NVDLA中Winograd卷积的设计
  7. Easy Poi入门
  8. oc基本知识
  9. 省市区三级联动(vue)
  10. asp.net core Api集成Swagger