剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
摘要
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
一、双指针解析
考虑定义双指针 i , j分列数组左右两端,循环执行:
- 指针 i从左向右寻找偶数;
- 指针 j从右向左寻找奇数;
- 将偶数nums[i]和奇数 nums[j]交换。
可始终保证:指针 i左边都是奇数,指针j右边都是偶数 。

算法流程:
- 初始化:i, j双指针,分别指向数组 nums左右两端;
- 循环交换: 当 i=j时跳出;
- 指针i遇到奇数则执行 i=i+1跳过,直到找到偶数;
- 指针j遇到偶数则执行 j=j−1跳过,直到找到奇数;
- 交换 nums[i]和 nums[j]值;
- 返回值:返回已修改的 nums数组
class Solution {public int[] exchange(int[] nums) {int left = 0, right = nums.length - 1;while (left < right) {while (left < right && nums[left] % 2 == 1) {left++;}while (left < right && nums[right] % 2 == 0) {right--;}if (left < right) {int temp = nums[left];nums[left] = nums[right];nums[right] = temp;left++;right--;}}return nums;}
}
复杂度分析:
- 时间复杂度 O(N): N为数组 nums长度,双指针 i, j共同遍历整个数组。
- 空间复杂度 O(1) : 双指针i, j使用常数大小的额外空间。
博文参考
《leetcode》
相关文章:
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
摘要 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 一、双指针解析 考虑定义双指针 i , j分列数组左右两端,循环执行: 指针 i从左向右寻找偶数;指针 j从右向左寻找奇数;将偶数nums[i]和奇数 nums[j]交换。 可始终保证&…...
实用版ChatBing论文阅读助手教程+新测评
实用版ChatBing论文阅读助手新测评 AI进化(更新)的速度太快了!距离我上次的【Chat嘴硬!基于NewBing的论文调研评测报告】,才四天,它已经进化到快能用的地步了! 这次是我刷B站看到热门推荐&…...
Linux生产者消费模型
1.生产者消费者模型 1.1 为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接…...
动态网站开发讲课笔记01:网页开发基础
文章目录零、本讲学习目标一、HTML基础(一)HTML简介1、HTML2、HTML语言的基本格式3、<!DOCTYPE>声明4、html标签5、head标签6、body标签7、编写第一个网页8、关于编写HTML文件的工具9、HTML标签概述(1)单标签(2&…...
互联网新时代要到来了(三)什么是ChatGPT?
什么是ChatGPT? tips:资料来自百度百科、openAi、CSDN博主「琦在江湖飘」、Info写作社区、CSDN博主「夕小瑶」等网页资料。 1.什么是ChatGPT? ChatGPT(全名:Chat Generative Pre-trained Transformer),…...
华为OD机试 - 环中最长子串(Python)
环中最长子串 题目 给你一个字符串s,首尾相连成一个环形, 请你在环中找出o字符出现了偶数次最长子字符串的长度. 备注: 1 <= s.lenth <= 5x10^5 s只包含小写英文字母 输入 输入是一个小写字母组成的字符串 输出描述 输出是一个整数 示例一 输入 alolobo输出 6说…...
安全—08day
ApabilitiesapabilitiesLinux Capabilities线程的 capabilitiesPermitted 允许Effective 有效InheritableBoundingAmbient文件的 capabilitiesPermittedInheritableEffective运行 execve() 后 capabilities 的变化案例分析方法一、依次执行如下命令方法二、iptables端口转发方案…...
【看表情包学Linux】进程地址空间 | 区域和页表 | 虚拟地址空间 | 初识写时拷贝
🤣 爆笑教程 👉 《看表情包学Linux》👈 猛戳订阅 🔥 💭 写在前面:本章核心主题为 "进程地址空间",会通过验证 Linux 进程的地址空间来开头,抛出 "同一个值能有不同内…...
响应式编程(Reactive Programming)介绍
什么是响应式编程? 在互联网上有着一大堆糟糕的解释与定义。Wikipedia 一如既往的空泛与理论化。Stackoverflow 的权威答案明显不适合初学者。Reactive Manifesto 看起来是你展示给你公司的项目经理或者老板们看的东西。微软的 Rx terminology"Rx Observables LINQ S…...
你不知道的美化列表的两种方案-<ul/><ol/>
大家好,我是半夏👴,一个励志更文1000篇沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 一起学习交流前端,成为更优秀的工程师~ CSS为什么这么难学?一定是你方法不对!!! 只要一杯奶茶,CSS任你学。学透CSS,拒绝切图仔!!! 学透CSS传送门 文章目录 学透CSS传送门前言li…...
2023年浙江理工大学MBA招生考试初试成绩查询及复查的通知
根据往年的情况,2023浙江理工大学MBA考试初试成绩可能将于2月21日下午两点公布,为了广大考生可以及时查询到自己的分数,杭州达立易考教育为大家汇总了信息。 一、成绩查询考生可登录中国研究生招生信息网“全国硕士研究生招生考试初试成绩查询…...
SVNH数据(.mat格式)转为图像(.png)matlab代码
一、获取SVNH数据数据集集地址-http://ufldl.stanford.edu/housenumbers/提供两种格式的数据:1.Format 1,图像形式,压缩包2.Format 2, .mat格式的数据10 classes, 1 for each digit. Digit 1 has label 1, 9 has label 9 and 0 ha…...
【总结】vim教程与详细命令总结,该来的躲不掉啊晕
B站|公众号:啥都会一点的研究生 目录写在前面vim的工作模式普通模式编辑模式命令模式命令大全,最详细(建议收藏)光标的移动插入模式 - 插入/追加文本编辑文本选择文本(可视化模式)可视化模式命令剪切, 复制…...
git基础使用
Git安装 去安装>> 正式开始 进入要管理的目录,执行命令 git init 查看管理目录下的状态 git status 注:新增文件和修改过后的文件都是红色 管理指定文件(红变绿) 指定文件:git add 文件名 当前目录下所有&…...
基于 RANSAC 的地面分割与聚类算法
文章目录 前言 一、算法原理 参考文献 二、代码实现 1.头文件 2.源文件...
JVM内存模型深度剖析与优化
1. Java语言的跨平台特性 2. JVM整体结构及内存模型 堆存放着对象信息每个线程都会分配一块属于自己的内存空间(栈空间) 每个方法都会分配一块内存空间(栈桢),上图 compute()方法 和 main()方法 都会分配到各自的栈桢空…...
软件性能测试定义中文
From Wiki软件性能测试在软件质量保证中,性能测试通常是一种测试实践,用于确定系统在特定工作负载下的响应能力和稳定性方面的表现。它还可以用于调查、测量、验证或验证系统的其他质量 属性,例如可扩展性、可靠性和资源使用。性能测试是性能…...
2023情人节正经性生活调研报告
省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2023年1月份热门报告合集ChatGPT的发展历程、原理、技术架构及未来方向2023年,如何科学制定年度规划?《底层逻辑》高清配图今天给大家带来丁香医生最新…...
22- 隐马尔科夫HMM (NLP自然语言算法) (算法)
HMM模型 : from hmmlearn.hmm import GaussianHMM model GaussianHMM(n_components3,n_iter100000, covariance_type diag) model.fit(X) 1、马尔科夫链 有向图模型(贝叶斯网络):用有向图表示变量间的依赖关系; 无向图模型&…...
gRPC是什么,怎么用
RPC是什么 RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传…...
Unity WASD移动控制优化:从基础实现到性能调优
1. WASD移动控制的基础实现 在Unity中实现WASD键盘控制角色移动是最基础的游戏开发技能之一。很多新手开发者可能会直接使用Input.GetKey这样的方法来检测按键状态,但这种方法在实际项目中往往会遇到性能问题。特别是在高配电脑上,游戏帧率可能达到上千帧…...
创新部署策略:如何高效配置OpenCore黑苹果安装环境
创新部署策略:如何高效配置OpenCore黑苹果安装环境 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 国光的黑苹果安装教程是一个全面专业的OpenCore配置指南…...
ADaFuSE Adaptive Diffusion-generated Image and Text Fusion for Interactive Text-to-Image Retrieval
ADaFuSE: Adaptive Diffusion-generated Image and Text Fusion for Interactive Text-to-Image Retrieval Authors: Zhuocheng Zhang, Xingwu Zhang, Kangheng Liang, Guanxuan Li, Richard Mccreadie, Zijun Long Deep-Dive Summary: ADaFuSE: 用于交互式文本到图像检索的…...
别再让漏洞扫描报警了!手把手教你给老旧Linux服务器升级OpenSSH和OpenSSL(附systemd服务修复秘籍)
企业级Linux服务器安全加固实战:OpenSSH与OpenSSL深度升级指南 凌晨三点,刺耳的安全告警声再次划破运维中心的宁静——漏洞扫描报告上醒目的红色标记显示:OpenSSH 7.4存在CVE-2023-38408高危漏洞。这不是演习,而是每位运维工程师都…...
ai辅助开发对比:github copilot与快马多模型在学生项目中的表现
最近在折腾学生项目时,发现AI编程助手的选择越来越多。作为通过GitHub学生认证的开发者,原本一直用Copilot当主力工具,但偶然接触到InsCode(快马)平台的多模型支持后,突然想做个系统性对比。于是花了周末时间搭建了个AI辅助开发评…...
Crowd.dev 开发者指南:如何扩展新的集成和自定义数据处理逻辑
Crowd.dev 开发者指南:如何扩展新的集成和自定义数据处理逻辑 【免费下载链接】crowd.dev ⚡️ The developer data platform to centralize community, product, and customer data 项目地址: https://gitcode.com/gh_mirrors/cr/crowd.dev Crowd.dev 是一款…...
Halcon实战:用shape_trans算子5分钟搞定不规则区域的最小外接矩形提取
Halcon实战:5分钟精准提取不规则区域最小外接矩形的工业级方案 在工业视觉检测领域,我们常常需要从复杂的背景中快速定位目标物体的精确边界。无论是印刷电路板上的字符识别、机械零件的尺寸测量,还是包装盒的位置校准,准确的目标…...
透视表vs交叉表:用餐厅小费数据掌握Pandas两大分析利器
透视表vs交叉表:用餐厅小费数据掌握Pandas两大分析利器 在数据分析的日常工作中,我们经常需要对数据进行多维度的交叉分析。想象一下这样的场景:你手里有一家连锁餐厅过去三个月的小费数据,老板想知道不同时间段(午餐/…...
Qwen3-VL-8B应用场景:电商商品识别、文档图表分析,边缘设备AI新玩法
Qwen3-VL-8B应用场景:电商商品识别、文档图表分析,边缘设备AI新玩法 1. 模型核心价值解析 Qwen3-VL-8B-Instruct-GGUF作为阿里通义最新推出的轻量化多模态模型,实现了技术突破与工程实用性的完美平衡。这款8B参数的"视觉-语言-指令&qu…...
vjhhvdjvshfsfd
汽车零件分装报警系统项目描述: 针对汽车机油滤芯零件生产过程中标签错贴、漏贴导致的质量问题,开发一套基于机器视觉的标签识别与报警系统,实现零件标签的实时检测与异常报警。主要职责:使用海康威视工业相机(30fps&a…...
