力扣题库刷题笔记735-行星碰撞

news2024/12/24 9:02:32

1、题目如下:

2、个人Python代码实现

         个人代码思路,主要是新建一个列表stack,将原列表asteroids中的元素依次加入到stack中。以上代码可能会有两部分比较冗余的部分,一是两个标志位可以不用单独声明,二是当stack列表中的最后一个元素为负数的时候,无论asteroids中的下一个元素是正数还是负数,都是直接加入到stack中。

        个人代码如下:

class Solution:

    def asteroidCollision(self, asteroids: List[int]) -> List[int]:

        stack = []                                          #声明一个空列表用于输出结果

        flag1 = 1                                           #标志位1,用于判断stack最后一个元素是否为正数

        flag2 = 1                                           #标志位2,用于判断asteroids第一个元素是否为正数

        i = 0                                               #下标,用于表示asteroids列表的第一个元素下标

        while len(asteroids) > 0:                           #当asteroids不为空时,循环继续

            if not stack:                                   #当stack不为空的时候,flag1为2

                flag1 = 2

            elif stack[-1] > 0:                             #当stack最后一个元素为正数的时候,flag1为1

                flag1 = 1

            else:                                           #当stack最后一个元素为负数的时候,flag1为0

                flag1 = 0

            if asteroids[i] == 0:                           #当asteroids第一个元素为0时,flag2为2

                flag2 = 2

            elif asteroids[i] > 0:                          #当asteroids第一个元素为正数的时候,flag2为1

                flag2 = 1

            else:                                           #当asteroids第一个元素为负数的时候,flag2为0

                flag2 = 0

            if flag1 == 2:                                  #当stack为空时,将asteroids第一个元素加入stack,并在asteroids中删除该元素

                stack.append(asteroids[i])

                del asteroids[i]

            elif flag1 == 1:                                #当stack最后一个元素为正数时

                if flag2 == 2:                              #当asteroids第一个元素为0时,在asteroids中删除该元素

                    del asteroids[i]

                elif flag2 == 1:                            #当asteroids第一个元素为正数时,将钙元素假如stack,并在asteroids中删除该元素

                    stack.append(asteroids[i])

                    del asteroids[i]

                elif flag2 == 0:                            #当asteroids第一个元素为负数时

                    if stack[-1] + asteroids[i] > 0:        #如果stack最后一个元素和asteroids第一个元素相加为正数,在asteroids中删除第一个元素

                        del  asteroids[i]

                    elif stack[-1] + asteroids[i] == 0:     #如果stack最后一个元素和asteroids第一个元素相加为0,删除这两个元素

                        del asteroids[i]        

                        stack.pop()

                    else:                                   #如果stack最后一个元素和asteroids第一个元素相加为负数,删除stack最后一个元素

                        stack.pop()

            elif flag1 == 0:                                #当stack最后一个元素为负数时,asteroids中的元素直接加入stack中,并唉asteroids中删除他

                if flag2 == 2:

                    del asteroids[i]

                elif flag2 == 1:

                    stack.append(asteroids[i])

                    del asteroids[i]

                elif flag2 == 0:

                    stack.append(asteroids[i])

                    del asteroids[i]

        return stack

3、题解Python代码如下:

        题解代码简洁很多,需要稍微调试才能理解,但是个人很难单独写出来,仅作为对比,表示个人代码长度。

        题解代码如下:

asteroids = [5, 10, -15, 6]
st = []
for aster in asteroids:
alive = True #每个asteroids列表中的元素初始化标志位都为True
#当且仅当标志位为True,当前元素asteroid为负数,st列表不为空且st最后一个元素为正数时,进入循环
while alive and aster < 0 and st and st[-1] > 0:
#当asteroid为负数且绝对值小于st最后一个元素时(即两数之和也为负数),标志位为True,否则为False
alive = st[-1] < -aster
#当两数之和为负数时,移除st最后一个元素
if st[-1] <= -aster:
st.pop()
if alive:
st.append(aster)
print(st)

 

 

 

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

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

相关文章

解析内存中的高性能图结构

在进行各种图处理、图计算、图查询的时候&#xff0c;内存或是硬盘中如何存储图结构是一个影响性能的关键因素。本文主要分析了几种常见的内存图结构&#xff0c;及其时间、空间复杂度&#xff0c;希望对你有所启发。 通常来说&#xff0c;对于图结构的几种常见的基础操作&…

通过SSH隧道安全消费Kafka数据

一.背景 由于我们有个业务在阿里云部署了Kafka&#xff0c;但是想直接在本地IDC机房服务器直接通过公网消费Kafka进行业务处理。这个本来也不是什么难事&#xff0c;阿里云把9092默认端口打开运行访问即可&#xff0c;也不不值得再写这篇博客了。 这个事情让人特别关注的一个主…

【记录】ChatGPT|图片预览魔法咒语魔改,使用 ChatGPT 返回大量可以跳转的链接

很早的时候&#xff0c;我已经留意到 ChatGPT 会以返回图片的 markdown 格式来显示图片&#xff0c;很可能拥有一定的图片上传功能&#xff0c;但是它往往会显示得有些问题。一些代码图片之类的或者风景图什么的都不是很会。 但其实 ChatGPT 是可以直接返回图片类型的回复的&a…

C++初始化列表

1.初始化列表概述 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括号中的初始值或表达式。 2.为什么使用初始化列表 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c…

个人电脑操作系统

UEFI&#xff08;Unified Extensible Firmware Interface&#xff0c;全称统一的可扩展固件接口&#xff09;是一种个人电脑系统规格&#xff0c;用来定义操作系统与系统固件之间的软件界面&#xff0c;作为BIOS的替代方案。其前身是Intel在1998年开始开发的Intel Boot Initiat…

【static_cast、reinterpret_cast、const_cast、dynamic_cast】C++类型转换

C类型转换 引入C语言中的类型转换 C的强制类型转换static_castreinterpret_catconst_castdynamic_cast向下转型的安全问题 explicit4种类型转换的应用场景 RTTI 引入 C语言中的类型转换 C语言和C都是强类型语言&#xff0c;如果赋值运算符左右两侧变量的类型不同&#xff0c;…

ChatGPT一键私有部署,全网可用,让访问、问答不再受限,且安全稳定!

前言 ChatGPT由于在访问上有一些限制&#xff0c;使用并不便利。目前国内可以直接访问的大部分是调用API返回结果&#xff0c;我们去使用时总会有次数限制&#xff0c;而且它们可能随便崩掉。 其实&#xff0c;目前我们访问过的大部分国内的网页包括UI&#xff0c;其实是套用了…

过滤器对前端请求参数进行解码URLDecoder,接口接收参数类型为map,解码无效问题

文章目录 一、前言二、设计思路三、代码实现四、启动测试五、过滤器解码无效六、源码跟踪七、解决方案八、再次重启测试九、总结 一、前言 最近做的一个公司项目&#xff0c;因为客户需要对特殊字符做搜索&#xff0c;但是前端的请求参数无法传递到后端&#xff0c;所以前端对…

VS2017中Qt项目数据库连接——包含报错比如QMYSQL driver not loaded(细心看到最后,一定能解决你想解决的问题)

我把爆的错误QMYSQL driver not loaded写在文章末尾了&#xff0c;大家看一看&#xff01;前面是配置数据库 一、测试 VS2017 中 Qt 项目数据库连接 打开 VS2017&#xff0c;文件——新建项目&#xff0c;右侧输入框输入 Qt 确定后点击下一步&#xff0c;勾选模块 基类也是默…

RSU路测单元,你知道多少?

一、什么是RSU路测单元&#xff1f; RSU路测单元是实现智慧的路、车路协同的关键设备&#xff0c;设置在路侧&#xff0c;与附近过往车辆进行双向通信、交互数据&#xff0c;是智能交通系统中的一种重要设备。RSU可以连接路面原有电子设备&#xff0c;比如信号灯和摄像头&…

一文解决Xshell无法连接vmware上的centos

问题描述 win10系统上安装VMware workstation16 pro&#xff0c;装好后安装centos虚拟机&#xff0c;在设置network & hostname时选择的NAT模式&#xff0c;即使用自定义的网关和IPv4地址&#xff0c;最后配置完成后centos主机地址信息如下&#xff0c;在虚拟机内部进行pi…

【一览无余】Vue框架下Cesium加载遥感地图使用GeoServer切割TIF大文件对外发布WMS服务进行地图绘制(科普篇2/2)

【一览无余】Vue框架下Cesium加载遥感地图使用GeoServer切割TIF大文件对外发布WMS服务进行地图绘制&#xff08;科普篇2/2&#xff09; 二、Cesium是弄啥嘞2.1 WebGL2.1.1 WebGL是什么2.1.2 WebGL优点 2.2 Cesium是什么2.3 Cesium能干什么2.4 Cesium相关工具有哪些2.5 相关案例…

Echarts 3D散点图

文章目录 以下是一个 html echarts的案例 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>ECharts 3D Scatter Plot Demo</title><!-- 引入 ECharts --><script src"https://cdnjs.cloudflare.com/…

急吗?光急可没用呀!满满干货,两小时速成,别搁那干瞪眼了!

全球产业链加速重构&#xff0c;各种不确定性加大&#xff01;数字经济规模不断提升&#xff0c;为企业转型与发展创造大量机会&#xff01;企业亟须以数字化为工具或手段&#xff0c;再造组织流程和业务流程&#xff0c;以数字化确定性应对外部环境变化的不确定性&#xff0c;…

中检集团:把数智化转型作为“1号工程”

2018年4月&#xff0c;中国检验认证集团&#xff08;以下简称“中检集团”&#xff09;启动信息化建设“1号工程”&#xff0c;5年时间&#xff0c;从“数字中检1.0”升级到“2.0”再到“2.1”“2.2”&#xff0c;中检集团在数智化转型过程中&#xff0c;可谓是打了一场攻坚战。…

智能ai文章伪原创工具-智能ai文章原创处理系统

智能AI文章伪原创工具 您好&#xff0c;智能AI文章伪原创工具是一种通过机器学习和自然语言处理技术&#xff0c;帮助用户生成“看起来像是”原创文章的人工智能工具。该工具的原理是将原始文章分解为各个句子和段落&#xff0c;然后对其中的一些单词、短语或句子进行修改或替…

MySQL高级(进阶)SQL语句

#显示一个字段或者多个字段的所有内容 SELECT “字段” FROM 表名 &#xff1b; #distinct对字段去重查询 &#xff08;最好只对单个字段进行去重&#xff09; SELECT DISTINCT 字段名 FROM 表名 #where 有条件查询 SELECT “字段” FROM 表名 WHERE 条件&#xff08;例如&a…

安卓开发:使用可为null性

Kotlin园地 地址&#xff1a;Kotlin 园地 | Android 开发者 | Android Developershttps://developer.android.google.cn/training/kotlinplayground?hlzh-cn 以下简称 “K园” 先在K园执行以下代码&#xff1a; fun main() {var fa: String "sandra on";prin…

服务攻防-协议漏洞-FTPRDPSSHRsyncProFTPDlibsshOpenssh-Hydra工具使用口令猜解未授权访问

目录 一、导图 二、口令猜解-Hydra-FTP&RDP&SSH 1、协议介绍 2、Hydra工具介绍 3、实例演示 三、配置不当-未授权访问-Rsync 文件备份 1、Rsync介绍 2、漏洞成因——配置不当 3、实例演示 四、协议漏洞-应用软件-FTP&ProFTPD搭建 1、引入 2、ProFTPD介…

IDEA 搭建 Maven模块化项目

目录 1.前言 2. 软硬件环境 3.项目搭建 3.1.创建 SpringBoot 父项目 3.2. 构建子项目centerdao 3.3. 构建子项目centerweb 4. 建立父子 Module 依赖 4.1 删除不必要文件 4.2.修改 Parent 项目 packaging 4.3.修改子项目pom.xml 信息 4.4. 补充说明 5. 项目继承关系…