力扣(LeetCode)按奇偶排序数组II 个人题解
2024-08-31 14:42:50
给定一个非负整数数组 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] 也会被接受。
提示:
2 <= A.length <= 20000
A.length % 2 == 0
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
最新文章
- LALR(1)语法分析生成器--xbytes
- java读取本地properties文件
- openid4java 使用记录[转载]
- C# Java 3DES加密解密 扩展及修正\0 问题
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
- linux学习方法之一
- Jquery 插件初学习
- Redis 集成Spring(spring-data-redis)
- 让横向ul在页面中水平居中的方法
- Java异常简介、异常捕获还是上抛总结
- 一键安装Cloud Torrent
- [emacs] emacs调整C代码的缩进格式等
- C#路径中获取文件全路径、目录、扩展名、文件名称
- IdentityServer4【Topic】之登陆注册
- python异常提示表
- 如何删除WINDOWS中服务中不再使用的服务?
- typedef在C和C++的区别?
- 20145330 《网络对抗》 Web安全基础实践
- Spring容器中bean的生命周期以及关注spring bean对象的后置处理器:BeanPostProcessor(一个接口)
- lumen 使用 dingo API 在 phpunit 中 404 的解决方法, 以及鉴权问题