热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【LeetCode】922.SortArrayByParityII解题报告(Python)

作者:负雪明烛id:fuxuemingzhu个人博客:http:fuxuemingzhu.cn目录题目描述题目大意解题方法使用奇偶数组排序

作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/



目录

    • 题目描述
    • 题目大意
    • 解题方法
      • 使用奇偶数组
      • 排序
      • 奇偶数位置变量
    • 日期

题目地址: https://leetcode.com/problems/sort-array-by-parity-ii

题目描述

Given an array A of non-negative integers, half of the integers in A are odd, and half of the integers are even.

Sort the array so that whenever A[i] is odd, i is odd; and whenever A[i] is even, i is even.

You may return any answer array that satisfies this condition.

Example 1:

Input: [4,2,5,7]
Output: [4,5,2,7]
Explanation: [4,7,2,5], [2,5,4,7], [2,7,4,5] would also have been accepted.

Note:

  1. 2 <&#61; A.length <&#61; 20000
  2. A.length % 2 &#61;&#61; 0
  3. 0 <&#61; A[i] <&#61; 1000

题目大意

把一个数组重新排序&#xff0c;使得偶数位置全是偶数&#xff0c;奇数位置全是奇数。

解题方法


使用奇偶数组

直接使用两个数组分别存放奇数和偶数&#xff0c;然后结果就是在这两个里面来回的选取就好了。这种做法比较简单&#xff0c;打比赛比较适用。

时间复杂度是O(N)&#xff0c;空间复杂度是O(N)。

class Solution(object):def sortArrayByParityII(self, A):""":type A: List[int]:rtype: List[int]"""odd &#61; [x for x in A if x % 2 &#61;&#61; 1]even &#61; [x for x in A if x % 2 &#61;&#61; 0]res &#61; []iseven &#61; Truewhile odd or even:if iseven:res.append(even.pop())else:res.append(odd.pop())iseven &#61; not isevenreturn res

排序

先对A进行排序&#xff0c;使得偶数都在前面&#xff0c;奇数都在后面&#xff0c;然后每次从前从后各取一个数&#xff0c;然后放到结果里就好了。

class Solution:def sortArrayByParityII(self, A):""":type A: List[int]:rtype: List[int]"""A.sort(key &#61; lambda x : x % 2)N &#61; len(A)res &#61; []for i in range(N // 2):res.append(A[i])res.append(A[N - 1 - i])return res

时间复杂度是O(NlogN)&#xff0c;空间复杂度是O(1)。

奇偶数位置变量

先把结果数组创建好&#xff0c;然后使用奇偶数两个变量保存位置&#xff0c;然后判断A中的每个数字是奇数还是偶数&#xff0c;对应放到奇偶位置就行了。

时间复杂度是O(N)&#xff0c;空间复杂度是O(1)。

class Solution:def sortArrayByParityII(self, A):""":type A: List[int]:rtype: List[int]"""N &#61; len(A)res &#61; [0] * Neven, odd &#61; 0, 1for a in A:if a % 2 &#61;&#61; 1:res[odd] &#61; aodd &#43;&#61; 2else:res[even] &#61; aeven &#43;&#61; 2return res

时间复杂度是O(N)&#xff0c;空间复杂度是O(N)。

参考资料&#xff1a;

日期

2018 年 10 月 14 日 —— 周赛做出来3个题&#xff0c;开心
2018 年 11 月 5 日 —— 打了羽毛球&#xff0c;有点累


推荐阅读
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 006_Redis的List数据类型
    1.List类型是一个链表结构的集合,主要功能有push,pop,获取元素等。List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,List的设 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
author-avatar
雅婷永幸482
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有