数据结构与算法之数组: LeetCode 905. 按奇偶排序数组 (Ts版)

按奇偶排序数组

  • https://leetcode.cn/problems/sort-array-by-parity/description/

描述

  • 给你一个整数数组 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

Typescript 版算法实现


1 ) 方案1: 两次遍历

function sortArrayByParity(nums: number[]): number[] {const n: number = nums.length;let index: number = 0;const res: number[] = new Array(n).fill(0);// 第一次遍历,将偶数放入结果数组for (const num of nums) {if (num % 2 === 0) {res[index++] = num;}}// 第二次遍历,将奇数放入结果数组for (const num of nums) {if (num % 2 === 1) {res[index++] = num;}}return res;
}

2 ) 方案2: 双指针 + 一次遍历

function sortArrayByParity(nums: number[]): number[] {const n = nums.length;const res = new Array(n).fill(0);let left = 0, right = n - 1;for (const num of nums) {if (num % 2 === 0) {res[left++] = num;} else {res[right--] = num;}}return res;
};

3 ) 方案3: 原地交换

function sortArrayByParity(nums: number[]): number[] {let left = 0, right = nums.length - 1;while (left < right) {while (left < right && nums[left] % 2 === 0) {left++;}while (left < right && nums[right] % 2 === 1) {right--;}if (left < right) {const temp = nums[left];nums[left] = nums[right];nums[right] = temp;left++;right--;}}return nums;
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/69664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt简单使用正则表达式

正则表达式 用于数据处理&#xff0c;数据查询&#xff0c;数据格式验证&#xff0c;替换文本&#xff0c;提取字串&#xff0c;相比str函数正则技术&#xff0c;开销小 在Qt简单使用正则表达式 在qt中使用类QRegExp类使用正则表达式 需要使用头文件 #include <QRegExp>…

LabVIEW 用户界面设计基础原则

在设计LabVIEW VI的用户界面时&#xff0c;前面板的外观和布局至关重要。良好的设计不仅提升用户体验&#xff0c;还能提升界面的易用性和可操作性。以下是设计用户界面时的一些关键要点&#xff1a; 1. 前面板设计原则 交互性&#xff1a;组合相关的输入控件和显示控件&#x…

使用开源项目xxl-cache构建多级缓存

xxl-cache简介 官网地址&#xff1a;https://www.xuxueli.com/xxl-cache/ 概述 XXL-CACHE 是一个 多级缓存框架&#xff0c;高效组合本地缓存和分布式缓存(RedisCaffeine)&#xff0c;支持“多级缓存、一致性保障、TTL、Category隔离、防穿透”等能力&#xff1b;拥有“高性…

C++ 设计模式-适配器模式

适配器模式示例,包括多电压支持、类适配器实现、安全校验等功能: #include <iostream> #include <memory> #include <stdexcept>// 抽象目标接口:通用电源接口 class PowerOutlet {public:virtual ~PowerOutlet() = default;virtual int outputPower() c…

【Java八股文】02-Java集合面试篇

【Java八股文】02-Java集合面试篇 概念数组与集合区别常用集合Java中的线程安全的集合是什么&#xff1f;Collections和Collection的区别 Listjava中list的几种实现把ArrayList变成线程安全的有哪些方法&#xff1f;CopyOnWriteArrayList是如何保证线程安全的&#xff1f; Mapj…

tenda路由器WriteFacMac存在远程命令执行漏洞(CVE-2024-10697)

一、漏洞简介 tenda路由器WriteFacMac存在远程命令执行漏洞 二、漏洞影响 tenda路由器三、网络测绘&#xff1a; fofa: title"Tenda | LOGIN"四、复现过程 POC 1 GET /goform/WriteFacMac?macls%20%3E/webroot/1.txt HTTP/1.1 Accept: text/html,application/…

C语言中字符与字符串的区别?

在 C 语言中&#xff0c;字符&#xff08;Character&#xff09;和字符串&#xff08;String&#xff09;是两个不同的概念&#xff0c;它们在定义、存储、操作等方面都存在明显的区别&#xff0c;下面为你详细介绍&#xff1a; 定义与表示 字符 &#xff08;1&#xff09;字…

mapbox进阶,添加绘图扩展插件,裁剪线

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…

react redux用法学习

参考资料&#xff1a; https://www.bilibili.com/video/BV1ZB4y1Z7o8 https://cn.redux.js.org/tutorials/essentials/part-5-async-logic AI工具&#xff1a;deepseek&#xff0c;通义灵码 第一天 安装相关依赖&#xff1a; 使用redux的中间件&#xff1a; npm i react-redu…

crontab制定任务计划删除超过5天以上的文件

文章目录 1.find命令的基本用法2.编写脚本3.制定任务计划4.制定任务计划后一定要重启一下crontab服务1.find命令的基本用法 #查询/data/docker/overlay2/目录下的host.access.log文件 find /data/docker/overlay2/ -path */log/nginx/host.access.log -print #删除/root/da…

有哪些免费的SEO软件优化工具

随着2025年互联网的不断发展&#xff0c;越来越多的企业意识到在数字营销中&#xff0c;网站的曝光度和排名至关重要。无论是想要提高品牌知名度&#xff0c;还是想要通过在线销售增加收益&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;都是一项不可忽视的关键策略。而要…

SpringBoot速成(九)获取用户信息 P9-P10

1.代码展示 P9 07&#xff1a;09&#xff1a;如何让Authorization直接保存 UserController: //获取用户信息GetMapping("/userInfo")public Result<User> userInfo(RequestHeader(name"Authorization") String token){//根据token得到usernameMap…

纪念日倒数日项目的实现-【纪念时刻-时光集】

纪念日/倒数日项目的实现## 一个练手的小项目&#xff0c;uniappnodemysql七牛云。 在如今快节奏的生活里&#xff0c;大家都忙忙碌碌&#xff0c;那些具有特殊意义的日子一不小心就容易被遗忘。今天&#xff0c;想给各位分享一个“纪念日”项目。 【纪念时刻-时光集】 一…

蓝桥杯备赛 Day13.1走出迷宫

链接&#xff1a;走出迷宫 题目描述 小明现在在玩一个游戏&#xff0c;游戏来到了教学关卡&#xff0c;迷宫是一个N*M的矩阵。 小明的起点在地图中用“S”来表示&#xff0c;终点用“E”来表示&#xff0c;障碍物用“#”来表示&#xff0c;空地用“.”来表示。 障碍物不能通…

ubuntu系统借助windows系统代理实现上网的做法

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 目前有这样一个场景&#xff1a;ubuntu系统装在一个嵌入式设备上&#xff0c;嵌入式设备只有一个网口&#xff0c;现在你手头有一台装有windows10系统的笔记本电脑&#xff0c;可以通过手机开热点来让笔记本电脑来上网…

deepseek的CoT优势、两阶段训练的有效性学习笔记

文章目录 1 DeepSeek的CoT思维链的优势1.2 open-r1的CoT训练数据1.3 ReAct任务与CoT任务适用场景 2 AI推理方向&#xff1a;deepseek与deepmind的两条路线的差异2.1 PRM与ORM的两大学派分支的差异2.2 DeepSeek-R1的两阶段训练概述 1 DeepSeek的CoT思维链的优势 DeepSeek跟之前…

BeginInvoke和Invoke的使用时机

在 WinForms 中&#xff0c;Control.BeginInvoke 和 Control.Invoke 都用于在 UI 线程上执行代码&#xff0c;但它们的核心区别在于 阻塞行为 和 线程调度方式。以下是 BeginInvoke 相比 Invoke 的主要优势&#xff1a; 1. 非阻塞调用 Invoke&#xff08;同步调用&#xff09;&…

大语言模型实践——基于现有API的二次开发

基于现有的API平台做一些实用的AI小应用。 API服务商&#xff1a;阿里云百炼 云服务器&#xff1a;阿里云&#xff08;2核2GB&#xff09; 部署框架&#xff1a;gradio 调用框架&#xff1a;openai 语言&#xff1a;Python &#xff08;注&#xff1a;若搭建网站或API接口…

STM32 RTC 实时时钟说明

目录 背景 RTC(实时时钟)和后备寄存器 32.768HZ 如何产生1S定时 RTC配置程序 第一次上电RTC配置 第1步、启用备用寄存器外设时钟和PWR外设时钟 第2步、使能RTC和备份寄存器访问 第3步、备份寄存器初始化 第4步、开启LSE 第5步、等待LSE启动后稳定状态 第6步、配置LSE为…

Prometheus监控系列 | blackbox_exporter配置实战

Prometheus监控系列 | blackbox_exporter配置实战 1. blackbox简介2. blackbox_exporter部署2.1. 下载安装包2.2. 配置启动文件3. blackbox_exporter配置文件详解3.1. HTTP监控3.2. TCP监控3.3. ICMP监控4. 监控域名SSL证书的到期时间5. 配置Prometheus配置文件6. Grafana监控展…