Python算法例21 交错正负数

1. 问题描述

给出一个含有正整数和负整数的数组,将其重新排列成一个正负数交错的数组。

2. 问题示例

给出数组[-1,-2,-3,4,5,6],重新排序之后,变成[-1,5,-2,4,-3,6]或者其他任何满足要求的答案。

3. 代码实现

使用双指针算法实现。双指针算法是一种常用的数组操作技巧,它通过使用两个指针在数组中同时从头和尾部遍历,来实现一些特定的操作。

def rearrange_array(nums):
    # 将正整数和负整数分别存放在不同的列表中
    positive_nums = [num for num in nums if num > 0]
    negative_nums = [num for num in nums if num < 0]

    result = []
    i, j = 0, 0
    while i < len(positive_nums) and j < len(negative_nums):
        # 先插入一个正���数,再插入一个负整数
        result.append(positive_nums[i])
        result.append(negative_nums[j])
        i += 1
        j += 1

    # 如果正整数或负整数列表还有剩余元素,将其加入结果列表中
    while i < len(positive_nums):
        result.append(positive_nums[i])
        i += 1

    while j < len(negative_nums):
        result.append(negative_nums[j])
        j += 1

    return result
nums = [-1, -2, -3, 4, 5, 6]
result = rearrange_array(nums)
print(result)

这个算法的时间复杂度是O(n),其中n是数组的长度。

在算法中,我们首先遍历一次数组将正整数和负整数分别存放在两个列表中,然后通过双指针的方式依次插入正整数和负整数到结果列表中。最后,如果正整数或负整数列表还有剩余元素,我们将其加入结果列表中。因此,整个算法的时间复杂度是O(n)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Web前端-JavaScript(对象)

文章目录 1.对象1.1 概念1.2 创建对象三种方式**对象字面量创建对象**&#xff1a;new Object创建对象构造函数创建对象 1.3 遍历对象 2.作用域1.1 概述1.2 全局作用域1.3 局部作用域1.4 JS没有块级作用域1.5 变量的作用域1.6 作用域链1.7 预解析 1.对象 1.1 概念 什么是对象 …

Ubuntu 磁盘管理DF命令用法

Linux磁盘空间管理是系统运维中的核心环节&#xff0c;它直接影响到系统的稳定运行、数据的安全性和业务的连续性。 通过实施有效的磁盘空间管理策略&#xff0c;系统管理员可以确保系统的高效运作&#xff0c;满足不断变化的业务需求&#xff0c;并为用户提供可靠的服务。 因此…

【YOLOv8新玩法】姿态评估解锁找圆心位置

前言 Hello大家好&#xff0c;今天给大家分享一下如何基于深度学习模型训练实现圆检测与圆心位置预测&#xff0c;主要是通过对YOLOv8姿态评估模型在自定义的数据集上训练&#xff0c;生成一个自定义的圆检测与圆心定位预测模型 制作数据集 本人从网络上随便找到了个工业工件…

自动标注软件AnyLabeling安装

AnyLabeling自动标注软件介绍 该工具作为一个具有Segment Anything和YOLO模型的智能标签工具&#xff0c;可以快速、准确地对图像进行标注。 AnyLabeling LabelImg Labelme Improved UI Auto-labeling 在Python终端运行 pip install anylabeling启动AnyLabeling anylabe…

危险品内陆运输相关知识_箱讯科技

危险品拖车 危险品拖车运输是一项涉及到高度危险物质的专业工作&#xff0c;需要确保合法合规的运输&#xff0c;并提供必要的信息以保障公共安全。进行这类运输时&#xff0c;需要携带一系列文件和具备特定的资质。 什么样的车适合做危险品拖车? 1、车辆类型&#xff1a;通…

长三角安防行业盛会“2024杭州安博会”4月份在杭州博览中心召开

作为中国安防行业的盛会&#xff0c;2024杭州安博会将于4月份在杭州国际博览中心隆重召开。本届安博会将汇聚全球最先进的安防技术和产品&#xff0c;为来自世界各地的安防从业者、爱好者以及投资者提供一个交流、展示和合作的平台。 据了解&#xff0c;2024杭州安博会将会展示…

Windows11系统下如何通过.cab文件更新PL2303串口驱动?

Windows11系统下如何通过.cab文件更新PL2303串口驱动? 首先,在微软官方网站上下载所需版本的.cab文件,具体链接如下: https://www.catalog.update.microsoft.com/Search.aspx?q=Prolific%20USB-to-Serial%20Comm%20Port 如下图所示,进入该网站后,找到自己所需的驱动版…

IPD产品开发的三类变更的含义和在流程中的位置

在基于IPD的产品开发过程中&#xff0c;变更仍然不可避免&#xff0c;甚至变更比基于传统流程的产品开发更多&#xff0c;因为IPD的产品开发是盯着市场变化、快速响应市场需求的&#xff0c;而这个世界唯一的不变就是变。那么&#xff0c;我们如何对产品开发过程中的变更进行分…

智能网络与网络安全:全球发展与未来趋势

导言 随着数字化时代的到来&#xff0c;智能网络和网络安全成为科技领域的研究热点。本文将深入研究智能网络与网络安全的发展过程、遇到的问题、解决过程&#xff0c;以及未来的可用范围。同时&#xff0c;关注各国在这一领域的应用情况和未来研究的趋势&#xff0c;以便在全球…

期货交易策略模拟测试-基于CLBISO01策略-2023.12.22

采取与昨天同样的策略进行盘中模拟测试&#xff0c;今天行情还可以&#xff0c;挺“顺溜”。

Xcode15 iOS 17 Simulator 离线安装,模拟器安装

Xcode 15 安装包的大小相比之前更小&#xff0c;因为除了 macOS 的 Components&#xff0c;其他都需要动态下载安装&#xff0c;否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库 无法真机和模拟器运行&#xff0c;更无法新建项目。但是由于模拟器安装包…

拖拽列表简单实现

样式部分&#xff1a; <style>.item {width: 500px;text-align: center;margin-bottom: 5px;height: 40px;line-height: 40px;border-radius: 5px;color: #fff;margin: 5 auto;background-color: red;}.item.moving {background: transparent;color: transparent;border…

JNI学习(二)

静态注册 接着上篇博客学习 JNI函数 JNIEXPORT void JNICALL Java_com_example_jnidemo_TextDemo_setText(JNIEnv *env, jobject this, jstring string){ __android_log_print(ANDROID_LOG_ERROR, "test", "invoke set from C\n");char* str (char*)(*e…

【mongoose】 Model.create() no longer accepts a callback 报错解决

在最新版的 mongoose 操作 MongoDB 数据库的时候&#xff0c;当我们插入一条数据时候&#xff0c;会报错 &#xff1a;Model.create() no longer accepts a callback&#xff0c;看了很多文章都说是&#xff0c;版本太高&#xff0c;都妥协选择了降低回旧版本&#xff0c;但我就…

HotRC DS600遥控器+F-06A接收机

PWM原理说明 DS600遥控器说明 DS600遥控器的默认高电平是1.5ms 1通道 左右 2通道 前后 3通道 接管 上电后是1ms &#xff0c;按一下是2ms&#xff0c;1ms和2ms切换 DS600接收机说明 */ #include "ps2.h" #include "common.h"#define LEFT_RIGHT_CHAN…

centos7安装开源日志系统graylog5.1.2

安装包链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1Zl5s7x1zMWpuKfaePy0gPg?pwd1eup 提取码&#xff1a;1eup 这里采用的shell脚本安装&#xff0c;脚本如下&#xff1a; 先使用命令产生2个参数代入到脚本中&#xff1a; 使用pwgen生成password_secret密码 …

数据库——事务

智能2112杨阳 一、目的与要求&#xff1a; 1.熟悉提交事务 2.回滚事务 3.检查点技术 注&#xff1a;可以用可视化软件来实现 二、内容&#xff1a; 基于现有数据库设计事务提交、事务回滚、及检查点实验&#xff0c;观察比较提交前后执行结果并分析。 源码&#xff1a…

管控品牌价格就是在维护品牌价值

当品牌各渠道中存在低价、乱价链接时&#xff0c;品牌首先应针对这些低价链接的不同现状进行管控&#xff0c;使链接不再低价&#xff0c;或者被下架删除链接&#xff0c;这些就是有效的价格管控流程&#xff0c;品牌价格被稳定住&#xff0c;也是在维护和稳定品牌价值。 品牌价…

Vue表格中鼠标移入移出input显示隐藏 ,有输入值不再隐藏

Vue表格中鼠标移入移出input显示隐藏 , 不再隐藏的效果 <el-tableref"table":data"tableDatas"borderstyle"width: 100%":span-method"arraySpanMethod"id"table"row-key"id"cell-mouse-enter"editCell&q…

mysql主从复制(在虚拟机centos的docker下)

1.安装docker Docker安装(CentOS)简单使用-CSDN博客 2.部署2个mysql docker run --name some-mysql1 -p 33061:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_cidocker run --name some-mysql2 -p 330…