当前位置: 首页 > news >正文

leetcode 905. 按奇偶排序数组

  • 题目描述
  • 解题思路
  • 执行结果
leetcode 905. 按奇偶排序数组


题目描述

  1. 按奇偶排序数组

给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。

返回满足此条件的 任一数组 作为答案。

示例 1:

输入:nums = [3,1,2,4] 输出:[2,4,3,1] 解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。 示例 2:

输入:nums = [0] 输出:[0]

提示:

1 <= nums.length <= 5000 0 <= nums[i] <= 5000

解题思路

法1

记录拼接法\

1.使用两个数组分别记录奇数和偶数

  1. 循环遍历数组,将数据记录在奇数数组与偶数数组中

  2. 最后拼接输出结果数组

  • 时间复杂度(O(n))
  • 空间复杂度(O(n))

法2

方法2:双指针\

  1. 两个指针分别指向头节点与尾节点

  2. 当尾节点为偶数,头节点为奇数时,交换位置

最后输出该数组

  • 时间复杂度(O(n))
  • 空间复杂度(O(1))

执行结果

法1

法2

我们使用两个指针 left 和 right 分别指向数组的开头和末尾。通过迭代比较指针位置的元素,我们可以将偶数元素移到数组的前面,奇数元素移到数组的后面。

具体的操作如下:

如果左指针指向偶数,右指针指向奇数,则左指针右移一位,右指针左移一位。

如果左指针指向奇数,右指针指向偶数,则交换左右指针位置的元素,并将左指针右移一位,右指针左移一位。

如果左指针指向偶数,右指针也指向偶数,则左指针右移一位。

如果左指针指向奇数,右指针也指向奇数,则右指针左移一位。

最终,当左指针大于等于右指针时,所有的偶数元素都已经移动到了数组的前面,而奇数元素则移动到了数组的后面。

left := 0
 right := len(nums) - 1

 for left < right {
  // 左指针指向偶数,右指针指向奇数
  if nums[left]%2 == 0 && nums[right]%2 != 0 {
   left++
   right--
  } else if nums[left]%2 != 0 && nums[right]%2 == 0 { // 左指针指向奇数,右指针指向偶数
   nums[left], nums[right] = nums[right], nums[left]
   left++
   right--
  } else if nums[left]%2 == 0 && nums[right]%2 == 0 { // 左指针指向偶数,右指针也指向偶数
   left++
  } else { // 左指针指向奇数,右指针也指向奇数
   right--
  }
 }

 return nums

执行结果: 通过 显示详情 查看示例代码 添加备注

执行用时: 8 ms , 在所有 Go 提交中击败了 69.23% 的用户 内存消耗: 4.6 MB , 在所有 Go 提交中击败了 100.00% 的用户 通过测试用例: 285 / 285 炫耀一下:



本文由 mdnice 多平台发布

相关文章:

leetcode 905. 按奇偶排序数组

题目描述解题思路执行结果 leetcode 905. 按奇偶排序数组 题目描述 按奇偶排序数组 给你一个整数数组 nums&#xff0c;将 nums 中的的所有偶数元素移动到数组的前面&#xff0c;后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1&#xff1a; 输入&#xff1a;…...

密码学安全性证明(一)Cramer-Shoup密码系统

Cramer-Shoup密码系统来自于A Practical Public Key CryptosystemProvably Secure against Adaptive ChosenCiphertext Attack这篇论文 CDH问题回顾&#xff1a; 已知(g,g^x, gk)能否计算gxk DDH问题回顾&#xff1a; 已知(g,g^x, g^k &#xff0c;D)能否判断D是否等于g^xk 注意…...

Asp.net Core系列学习(1)

Asp.net Core 6系列学习 文章目录 Asp.net Core 6系列学习Asp.net Core 概述一、在 ASP.NET 4.x 和 ASP.NET Core 之间进行选择二、适用于服务器应用的 .NET 与 .NET Framework三、ASP.NET Core Web UI1.服务器和客户端呈现 UI 的优势和成本2.服务器呈现的 UI 四、可用的 ASP.N…...

IDEA 2022.2 安装以及自定义优化

IDEA2022.2 安装以及自定义优化 文章目录 IDEA2022.2 安装以及自定义优化安装图解获取激活码自定义优化文件编码设置设置类文档注释和方式注释模板方法分割线 常用插件离线安装 安装图解 静默卸载&#xff08;旧版本的设置和配置将不会被删除&#xff09; 获取激活码 略…...

【华为OD机试真题2023B卷 JAVA】阿里巴巴找黄金宝箱(II)

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 阿里巴巴找黄金宝箱(II) 知识点数组哈希表优先级队列 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 一贫如洗的樵夫阿里巴巴在去砍柴的路上,无意中发现了强盗集团的藏宝地,藏宝地有编号从0~N的箱子,每个箱子上…...

Python对Excel文件多表对多表之间的匹配(两种不同表头)——之json版

首先Excel文件多表对多表之间的匹配(VLOOKUP),有多种办法&#xff0c; 1&#xff1a;将Excel文件导入Mysql或其他数据库,然后将两种表合并成一张表&#xff0c;接着用数据库匹配 2&#xff1a;将两种表内容&#xff0c;复制粘贴到一起&#xff0c;各自分别保存成一张表&#xf…...

shiro环境搭建

源码部署 这种方法相对复杂&#xff0c;如果不需要分析源码直接用docker就行 前置条件&#xff1a;Maven Ideal Tomcat 下载方式1&#xff1a;https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4&#xff0c;然后将文件夹导入ideal下载方式2&#xff1a;将shiro…...

一文读懂selenium自动化测试(基于Python)

前言 我们今天来聊聊selenium自动化测试&#xff0c;我们都知道selenium是一款web自动化测试的工具&#xff0c;它应该如何去运用呢?我们接着看下去。 ​1、Selenium简介&#xff1a; 1.1 Selenium&#xff1a; Selenium是一款主要用于Web应用程序自动化测试的工具集合。Sele…...

如何高效地在网上找开源项目

开源项目是发展技能、分享想法和成为开发社区一员的好方法。开源意味着软件功能背后的源代码与所有想要阅读它的人公开共享。这意味着你可以准确地看到一个系统是如何工作的——一旦你愿意冒险&#xff0c;就为它做出贡献。除了向所有人开放贡献外&#xff0c;这种开放代码库通…...

2023系统分析师---冲刺资料必备知识点三

视图的优点&#xff1a; 视图能简化用户的操作&#xff1b;视图机制可以使用户以不同的方式查询同一数据&#xff1b;视图对数据库重构提供了一定程度的逻辑独立性&#xff1b;视图可以对机密的数据提供安全保护&#xff1b; ER图、实体、联系、联系的类型&#xff1a; 分布…...

集成Bean Validation 1.1(JSR-349)到 SpringMVC

Spring4新特性——集成Bean Validation 1.1(JSR-349)到 SpringMVC Bean Validation 1.1当前实现是Hibernate validator 5&#xff0c;且spring4才支持。接下来我们从以下几个方法 讲解Bean Validation 1.1&#xff0c;当然不一定是新特性&#xff1a; 1. 集成Bean Valida…...

【软考中级】软件设计师选择题题集(一)

海明校验码是在n个数据位之外增设k个校验位,从而形成一个k+n位的新的码字, 使新的码字的码距比较均匀地拉大。n与k的关系是(1)。 (1)A.2k - 1≥n + k  B.2n - 1≤ n + k   C.n = k  D.n-1≤k 【答案】A 【解析】 【答案】B A 【解析】 在采用结构化方法进行系统分析时,…...

10个炫酷特效的网页写法(附源码),拿去就能用,奈斯奈斯

这是我借鉴其他博主的&#xff0c;给网页加个背景&#xff0c;给鼠标加个特效&#xff0c;“使用简单”&#xff0c;“效果爆炸”的页面&#xff0c;分享给大家&#xff0c;如果觉得有帮助可以点赞收藏支持一下&#xff0c;如果能关注一下就再好不过了。 内容转载于https://bl…...

vscode开发stm32的编译环境配置教程

文章目录 1. 背景2. 配置步骤2.1. vscode插件安装2.2. 新建工程2.3. 配置编译环境2.3.1. 芯片支持2.3.2. 编译器选择2.3.3. CPU类型2.3.4. 硬件浮点选项2.3.5. 使用自定义的链接脚本2.3.6. RAM/FLASH布局2.3.7. 构建器选项2.4. 编译3. 问题汇总3.1. 浮点编译开关3.2. MicroLIB编…...

Live800在线客服系统:客户体验即是业绩来源

“客户就是上帝”&#xff0c;这一论断在商业行为中早已成为不争的事实。 所有企业都知道&#xff0c;满足客户的需求才能让企业稳步发展。在产品同质化严重的今天&#xff0c;客户服务成为核心竞争力&#xff0c;试想一下&#xff0c;在产品、价格相差无几的两个企业中&#…...

SAP工具箱 MR22自定义BAPI

点击蓝字 关注我们 一 前言 标准事务代码MR22 通过调整金额影响物料的成本价,前台界面中单个凭证中允许输入多行物料, 但是对应的BAPI函数仅支持输入单行物料 BAPI_MATVAL_DEBIT_CREDIT 正常库存BAPI_SALESORDSTCK_DEBIT_CREDIT 销售订单库存 这种情况 婶可忍叔不可忍 (感谢用户…...

ASP.NET 网上选课系统的设计与实现(源代码+论文)

随着教育改革的不断深化,建立一套能够适应这些改变的行政管理方案也就显得尤为重要。在高等院校的日常工作中,每个学期都要面临学生的选课工作。以往在选课工作的各个阶段都是手工操作,不但效率低下、工作繁琐,而且容易出错,于是开发一套适合校情的网上选课系统便成为了教…...

SpringMVC学习总结(路由映射、参数传递、转发和重定向...)

目录 1. MVC简介 2. SpringMVC简介 3. 路由映射注解 3.1 RequestMapping 3.2 GetMapping与PostMapping 4. 接收前端传递参数 4.1 接收单/多个参数 4.2 接收对象 4.3 接收JSON对象 4.4 后端参数重命名/映射 4.5 设置参数必传/非必传 4.6 获取URL中的参数 4.7 获取文…...

基于MAC地址的ACL配置

基于MAC地址的ACL配置 【实验目的】 掌握基于MAC地址的标准ACL的配置。验证配置。 【实验拓扑】 实验拓扑如图1所示。 图1 实验拓扑 设备参数如表所示。 表1 设备参数表 设备 接口 IP地址 子网掩码 默认网关 S1 e0/0 N/A N/A N/A e0/1 N/A N/A N/A PC1 N/…...

软件设计师 计算机网络

名字带IP AP的都是网络层 所有带T的除了TFTP其他都是TCP&#xff0c;所有不带T的除了POP3其他都是UDP​ **物理层的互联设备有中继器和集线器&#xff0c;集线器是一种特殊的多路多端口中继器 网络层&#xff1a;路由器 物理层&#xff1a;中继器 数据链路层&#xff1a;网桥…...

从塔防到RPG:在Unity里用A*算法实现不同游戏类型的敌人AI(实战案例)

从塔防到RPG&#xff1a;在Unity里用A*算法实现不同游戏类型的敌人AI&#xff08;实战案例&#xff09;当你在玩一款塔防游戏时&#xff0c;是否好奇那些怪物为何总能找到通往终点的最优路径&#xff1f;或者在RPG游戏中&#xff0c;NPC为何能绕过复杂地形精准追踪玩家&#xf…...

UE5小地图实战:SceneCapture2D+RenderTarget动态雷达优化指南

1. 这不是“加个UI贴图”就能糊弄过去的小地图在UE5项目里做小地图&#xff0c;很多人第一反应是&#xff1a;找张静态地图图片&#xff0c;用UMG拖个Image控件&#xff0c;再写个蓝图把玩家坐标换算成UI像素位置——做完就交差。我去年带一个独立团队做开放世界生存游戏时&…...

3DMAX傻瓜式插件SimpleRope:一键生成绳子软管螺旋线!

3MAX简单绳子插件SimpleRope&#xff0c;从样条线生成螺旋线网格&#xff08;包括简单的绳子&#xff09;。本教程将带你全面掌握SimpleRope插件的使用方法&#xff0c;从普通的绳子、柔性的软管&#xff0c;到参数可调的螺旋线&#xff0c;只需一条样条线路径&#xff0c;点击…...

别再为单细胞数据批次效应发愁了!手把手教你用Harmony算法搞定整合分析

单细胞数据整合实战&#xff1a;用Harmony消除批次效应的完整指南当你在不同时间、不同实验室或使用不同平台获得多个单细胞RNA测序数据集时&#xff0c;最令人头疼的问题莫过于批次效应——这种技术性差异会掩盖真实的生物学信号。想象一下&#xff0c;你精心设计的实验因为数…...

机器学习预测器评估随机数生成器最小熵:原理、实现与对比分析

1. 项目概述&#xff1a;当机器学习遇上随机性评估在信息安全领域&#xff0c;随机数生成器的质量是基石。无论是生成加密密钥、初始化向量&#xff0c;还是为各类协议提供随机性&#xff0c;其输出的不可预测性直接决定了整个系统的安全强度。我们如何量化这种“不可预测性”&…...

信创中间件深度解析:东方通TongWeb vs 金蝶天燕 vs 宝兰德,企业级选型指南

&#x1f4da; 信创中间件 &#x1f527; 企业级部署 &#x1f680; 国产化替代 ⏱️ 阅读约15分钟开篇导读&#xff1a;你是否在信创改造中不知道用什么替代WebLogic或WebSphere&#xff1f;网上搜到的中间件资料要么只讲产品功能不讲迁移方案&#xff0c;要么直接给配置却不解…...

Windows进程内存操控终极指南:Xenos DLL注入器深度解析

Windows进程内存操控终极指南&#xff1a;Xenos DLL注入器深度解析 【免费下载链接】Xenos Windows dll injector 项目地址: https://gitcode.com/gh_mirrors/xe/Xenos 在Windows系统开发和安全研究领域&#xff0c;DLL注入技术是实现进程间通信、功能扩展和深度监控的核…...

Adobe-GenP 3.0终极指南:5分钟快速免费解锁Adobe全系列软件

Adobe-GenP 3.0终极指南&#xff1a;5分钟快速免费解锁Adobe全系列软件 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为Adobe Creative Cloud高昂的订阅费用发…...

【2026年版|必收藏】从0到1!AI大模型保姆级学习路线

2026年&#xff0c;大模型已从实验室走向规模化落地&#xff0c;AI Agent&#xff08;智能体&#xff09;、多模态、世界模型成为行业核心热点&#xff0c;无论是零基础小白想入门AI赛道&#xff0c;还是程序员想转型大模型领域&#xff0c;一套系统、不踩坑的学习路线都至关重…...

机器遗忘:从合规需求到技术实现,ROEL-TID框架如何平衡效率与精度

1. 项目概述&#xff1a;当机器学习模型需要“忘记”时在过去的十年里&#xff0c;我亲眼见证了机器学习如何从一个学术概念&#xff0c;演变为驱动商业决策、优化用户体验乃至重塑行业格局的核心引擎。从电商平台的“猜你喜欢”&#xff0c;到金融系统的欺诈交易拦截&#xff…...