【力扣题解】922. 按奇偶排序数组 II

news/2025/2/6 19:54:02 标签: leetcode, 算法, 职场和发展

😊博主目前也在学习,有错误欢迎指正😊
🌈保持热爱 奔赴星海🌈

文章目录

    • 一、题目
      • 1、题目描述
      • 2、基础框架
      • 3、原题链接
    • 二、解题报告
      • 1、思路分析
      • 2、代码详解
    • 三、本题知识

一、题目

1、题目描述

给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。
对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。
你可以返回 任何满足上述条件的数组作为答案 。

2、基础框架

  • c++版本框架代码如下:
class Solution {
public:
    vector<int> sortArrayByParityII(vector<int>& nums) {
        
    }
};

3、原题链接

链接

二、解题报告

1、思路分析

       (1)借鉴快排的思路,把数组中的元素分为偶数和奇数两个部分,偶数放在左边,奇数放在右边。
       (2)再次利用类似方法,把数组中的元素放到指定位置。

2、代码详解

	class Solution {
	public:
	    vector<int> sortArrayByParityII(vector<int>& nums) {
	        int n = nums.size();
	        int l = 0;
	        int r = n - 1;
	        while(l < r) {
	            while(l < r && nums[l]%2 == 0) l++;
	            while(l < r && nums[r]%2 == 1) r--;
	            swap(nums,l,r);
	        }
	        l = 0,r = n - 1;
	        while(l < r) {
	            while(l < r && l%2 == 0 && nums[l]%2 == 0) l++;
	            while(l < r && r%2 == 1 && nums[r]%2 == 1) r--;
	            swap(nums,l,r);
	            l++;
	            r--;
	        }
	        return nums;
	    }
	    void swap(vector<int>& nums,int l,int r) {
	        int t = nums[l];
	        nums[l] = nums[r];
	        nums[r] = t;
	    }
	};
//

三、本题知识

双指针


http://www.niftyadmin.cn/n/5843291.html

相关文章

100.2 AI量化面试题:在构建多因子选股模型时,如何有效处理因子之间的共线性问题?

目录 0. 承前1. 共线性问题的基本认识1.1 什么是共线性1.2 共线性的检测方法 2. 共线性处理的主要方法2.1 因子筛选法2.2 因子正交化 3. 高级处理方法3.1 主成分分析(PCA)3.2 因子旋转 4. 实践建议4.1 处理流程建议4.2 效果评估 5. 回答话术 0. 承前 如果想更加全面清晰地了解…

python零基础入门学习之“输入”

引入 在银行ATM机器前取钱时&#xff0c;肯定需要输入密码&#xff0c;对不&#xff1f;那么怎样才能让程序知道咱们刚刚输入的是什么呢&#xff1f;&#xff1f; 大家应该知道了&#xff0c;如果要完成ATM机取钱这件事情&#xff0c;需要先从键盘中输入一个数据&#xff0c;…

DIY Shell:探秘进程构建与命令解析的核心原理

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; Shell&#xff08;外壳&#xff09;是一个操作系统的用户界面&#xff0c;它提供了一种方式&#xff0c;使得用户能够与操作系统进行交互。Shell 是用户与操作系统之间的桥梁&#xff0c;允许用户通过命令行…

(一)DeepSeek大模型安装部署-Ollama安装

大模型deepseek安装部署 (一)、安装ollama curl -fsSL https://ollama.com/install.sh | sh sudo systemctl start ollama sudo systemctl enable ollama sudo systemctl status ollama(二)、安装ollama遇到网络问题&#xff0c;请手动下载 ollama-linux-amd64.tgz curl -L …

【PDF多区域识别】如何批量PDF指定多个区域识别改名,基于Windows自带的UWP的文字识别实现方案

海关在对进口货物进行查验时,需要核对报关单上的各项信息。对报关单 PDF 批量指定区域识别改名后,海关工作人员可以更高效地从文件名中获取关键信息,如货物来源地、申报价值等。例如文件名 “[原产国]_[申报价值].pdf”,有助于海关快速筛选重点查验对象,提高查验效率和监管…

Java常见的技术场景面试题

一、单点登录这块怎么实现的&#xff1f; 单点登录概述 单点登录&#xff1a;Single Sign On&#xff08;简称SSO&#xff09;,只需要登录一次&#xff0c;就可以访问所有信任的应用系统 在以前的时候&#xff0c;一般我们就单系统&#xff0c;所有的功能都在同一个系统上。…

服务端渲染技术

一.JSP 1.jsp介绍,全称是java Server Pages ,java服务器页面,就是服务端渲染技术,html只能为用户提供静态数据,而JSP技术允许在页面中嵌套 java代码,jsp技术基于Servlet,Servlet很难对数据进行排版,而jsp就可以,可以理解为jsp就是对Servlet的包装. 2.jsp程序本质是java程序,无…

Java进阶学习之路

Java进阶之路 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 Java进阶之路前言一、Java入门 Java基础 1、Java概述 1.1 什…