Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >LeetCode - 按奇偶排序数组②

LeetCode - 按奇偶排序数组②

作者头像
晓痴
发布于 2019-07-24 06:05:34
发布于 2019-07-24 06:05:34
1.3K00
代码可运行
举报
文章被收录于专栏:曌的晓痴曌的晓痴
运行总次数:0
代码可运行

这题是LeetCode第N次周赛的题目,题号是922,难度是Easy,当时处于疯狂刷通过率高的题目,然后提高自己的信心的地步...看提交记录,应该是一个月三周前提交的了。

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

题目描述

给定一个非负整数数组 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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/sort-array-by-parity-ii

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

这题的要求就是,将数组中的元素,按照[偶,奇,偶,奇...]的顺序排列下去。然后数组中的元素数量是偶数个,也就是奇数和偶数的数量是一样的。那么思路就是,从头开始遍历,每次移动两个位置,也就是当前元素必须是偶数。如果是奇数,那就从坐标j开始找偶数交换位置。然后增加j的大小。

理论上来说,一共遍历了两次数组。

中文官网题解:

https://leetcode-cn.com/problems/sort-array-by-parity-ii/solution

个人题解:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int[] sortArrayByParityII(int[] A) {
      int j = 1;
        for (int i = 0; i < A.length; i += 2) {
            if (A[i] % 2 != 0) {
                for (; j < A.length; j += 2) {
                    if (A[j] % 2 == 0) {
                        int tmp = A[i];
                        A[i] = A[j];
                        A[j] = tmp;
                        break;
                    }
                }
            }
        }
        return A;
    }
}

结果:

又是一个结果不错的解题,耗时4ms,超过了97%的用户。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 曌的晓痴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Js遍历对象总结
Js遍历对象的方法主要有for in、Object.keys()、Object.getOwnPropertyNames()、Reflect.ownKeys()、Object.getOwnPropertySymbols()。
WindRunnerMax
2020/08/27
6.9K0
javascript 中Object一些操作方法
方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
chuchur
2022/10/25
6870
JS面试之对象(2)
new的作用: 1.创了一个新对象; 2.this指向构造函数; 3.构造函数有返回,会替换new出来的对象,如果没有就是new出来的对象
火狼1
2019/04/17
6890
JS面试之对象(2)
【前端基础进阶】JS-Object 功能详解
该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身属性,不拷贝继承的属性。 Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属性的值是对象,那么目标对象拷贝得到的是这个对象的引用。同名属性会替换。
super.x
2019/04/12
1.5K0
【前端基础进阶】JS-Object 功能详解
Object 中的几个很相似的方法
这里主要讨论这么几个方法,他们用法很相似,但又有所不同。在实际开发中就有可能陷入其中,搞不清到底用哪个方法比较好。下面就开始一一介绍。
多云转晴
2019/10/23
6040
Object 中的几个很相似的方法
【JS】307- 复习 Object.assign 原理及其实现
上篇文章介绍了赋值、浅拷贝和深拷贝,其中介绍了很多赋值和浅拷贝的相关知识以及两者区别,限于篇幅只介绍了一种常用深拷贝方案。
pingan8787
2019/08/06
1.2K0
JavaScript 对象所有API解析【2020版】
近日发现有挺多人对对象基础API不熟悉,举个开发中常见的需求,经常会有类似的封装http到原型Vue.prototype,一般人是这样封装的,但容易被篡改。
前端迷
2020/02/26
1K0
深入学习 JavaScript——Object 对象
JavaScript的世界中「一切皆是对象」,而所有对象的起源就是 Object 对象。
李振
2021/11/26
6460
深入 JS 对象属性
对象的普通属性将字符串名称映射到值。例如,下面对象obj有一个数据属性,名称为 prop,对应的值为 123:
前端小智@大迁世界
2019/09/10
8.7K0
《你不知道的js(上卷)》笔记2(this和对象原型)
this关键字是javascript中最复杂的机制之一。它是一个很特别的关键字,被自动定义在 所有函数的作用域中。
陨石坠灭
2020/01/21
7060
[OHIF-Viewers]医疗数字阅片-医学影像-Module: Panel-自定义面板-中-es6-Object.defineProperty()定义属性
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。
landv
2020/07/17
6800
自己实现一个VUE响应式--VUE响应式原理
这里的响应式(Reactive)不同于CSS布局的响应式(Responsive), 这里的响应式是指数据和视图的绑定,数据一旦更新,视图会自动更新。下面让我们来看看Vue是怎么实现响应式的,Vue 2.0和Vue 3.0的实现原理还不一样,我们来分开讲。
蒋鹏飞
2020/10/15
6590
自己实现一个VUE响应式--VUE响应式原理
JS原生引用类型解析1-Object类型
(注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!) (注2:更多内容请查看我的目录。)
love丁酥酥
2018/08/27
2.2K0
Object.definePropety
Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象,也就是说,该方法允许精确地添加或修改对象的属性。
WindRunnerMax
2020/08/27
5300
详解JavaScript的Object对象
Object 是 JavaScript 的一种 数据类型 ,用于存储各种键值集合和更复杂的实体,几乎所有对象都是 Object 类型的实例,它们都会从 Object.prototype 继承属性和方法,虽然大部分属性都会被覆盖(shadowed)或者说被重写了(overridden)。
Learn-anything.cn
2021/12/22
6510
《你不知道的JavaScript(上)之原型对象》读书笔记
4.如果构造函数中没有返回新对象,那么返回this,即创建新对象;否则,返回构造函数中返回的对象。
after the rain
2022/08/08
6540
Javascript之其实我觉得原型链没有难的那么夸张!
  原型链、闭包、事件循环等,可以说是js中比较复杂的知识了,复杂的不是因为它的概念,而是因为它们本身都涉及到很多的知识体系。所以很难串联起来,有一个完整的思路。我最近想把js中有点意思的知识都总结整理一下,虽然逃不开一些一模一样的内容,但是自己造一下轮子,按照自己的思路。也别有一番味道。
zaking
2020/08/19
7540
js对象的各种方法
这里的create方法是以sourceObj为targetObj的原型对象创建一个新的空对象,我用这个来验证sourceObj是不是targetObj的原型对象,结果为true
y191024
2024/01/31
1380
js对象的各种方法
【ES6基础】Object的新方法
Object对象可谓是JS的重要核心内容,在你使用JS的过程中,你会发现自己的工作大部分都是在操作对象,ES6、ES7、ES8引入了不少新的方法,本篇文章笔者将带着大家一起熟悉下重点的新方法。
前端达人
2019/05/27
7040
【ES6基础】Object的新方法
对象的新增方法
ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===)。它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。
小小杰啊
2022/12/21
1.1K0
推荐阅读
相关推荐
Js遍历对象总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验