当前位置:网站首页>剑指 Offer II 037. 小行星碰撞
剑指 Offer II 037. 小行星碰撞
2022-07-30 14:20:00 【Mr Gao】
剑指 Offer II 037. 小行星碰撞
给定一个整数数组 asteroids,表示在同一行的小行星。
对于数组中的每一个元素,其绝对值表示小行星的大小,正负表示小行星的移动方向(正表示向右移动,负表示向左移动)。每一颗小行星以相同的速度移动。
找出碰撞后剩下的所有小行星。碰撞规则:两个行星相互碰撞,较小的行星会爆炸。如果两颗行星大小相同,则两颗行星都会爆炸。两颗移动方向相同的行星,永远不会发生碰撞。
示例 1:
输入:asteroids = [5,10,-5]
输出:[5,10]
解释:10 和 -5 碰撞后只剩下 10 。 5 和 10 永远不会发生碰撞。
示例 2:
输入:asteroids = [8,-8]
输出:[]
解释:8 和 -8 碰撞后,两者都发生爆炸。
示例 3:
输入:asteroids = [10,2,-5]
输出:[10]
解释:2 和 -5 发生碰撞后剩下 -5 。10 和 -5 发生碰撞后剩下 10 。
示例 4:
输入:asteroids = [-2,-1,1,2]
输出:[-2,-1,1,2]
解释:-2 和 -1 向左移动,而 1 和 2 向右移动。 由于移动方向相同的行星不会发生碰撞,所以最终没有行星发生碰撞。
解题代码如下:
/** * Note: The returned array must be malloced, assume caller calls free(). */
int* asteroidCollision(int* asteroids, int asteroidsSize, int* returnSize){
int r[asteroidsSize];
r[0]=asteroids[0];
int size=1;
int i;
for(i=1;i<asteroidsSize;i++){
int now=asteroids[i];
// printf("-- %d %d %d",now,r[size-1],size);
if(size==0){
r[size++]=now;
continue;
}
if(now*r[size-1]<0&&now<0){
//printf("%d %d ",abs(now),abs(r[size-1]));
while(abs(r[size-1])<=abs(now)&&size!=0&&now*r[size-1]<0&&now<0){
if(abs(r[size-1])==abs(now)){
size--;
// printf("%d ",size);
break;
}
//if(size==)
size--;
if(size==0){
break;
}
}
if(size>=1)
if(now*r[size-1]>0&&r[size]!=-now){
r[size++]=now;
}
if(size==0&&r[0]!=-now){
r[size++]=now;
}
}
else{
r[size++]=now;
// printf("| %d ",size);
}
}
// printf("size %d ",size);
for(i=0;i<size;i++){
asteroids[i]=r[i];
// printf("%d ",r[i]);
}
* returnSize=size;
return asteroids;
}
边栏推荐
- 为什么做软件测试一定要学自动化?谈谈我眼中自动化测试的价值
- Androd 跳转到google应用市场
- 我为何从开发人员转做测试,3年软件测试工程师,带你聊聊这其中的秘辛
- 记面试外包公司的一次经历,到底该不该去?
- 2022年,目前大环境下还适合转行软件测试吗?
- 3年软件测试经验面试要求月薪22K,明显感觉他背了很多面试题...
- The main content of terrain analysis (the special effect level of the wandering earth)
- Cookie simulation login "recommended collection"
- The evolution of content products has three axes: traffic, technology, and product form
- Web3创始人和建设者必备指南:如何构建适合的社区?
猜你喜欢

八年测试经验,为何惨遭领导痛批:你写的测试文档还不如刚来的应届生

Flask Framework - Sijax

接口自动化框架,lm-easytest内测版发布,赶紧用起来~

DocuWare 文件管理与工作流程自动化案例研究——DocuWare 工作流程功能使在家工作的员工能够保持沟通和高效工作,支持混合环境

时间序列的数据分析(四):STL分解

三电系统集成技术杂谈

MPSK抗噪声性能对比(即MPSK标准误码率曲线)

How to use Databricks for data analysis on TiDB Cloud | TiDB Cloud User Guide

Six-faced ant financial clothing, resisting the bombardment of the interviewer, came to interview for review

吃透Chisel语言.29.Chisel进阶之通信状态机(一)——通信状态机:以闪光灯为例
随机推荐
ToDesk版本更新,引入RTC传输技术,是否早以替代向日葵远程控制?
MySQL客户端工具的使用与MySQL SQL语句
SLF4J的使用
算力顶天地,存力纳乾坤:国家超级计算济南中心的一体两面
00 testers of seasoning after nearly a year, whether to change careers or to learn the software testing students summarized the following heart advice
JSON常用注解
Container sorting case
00后测试员摸爬滚打近一年,为是否要转行或去学软件测试的学弟们总结出了以下走心建议
Why do software testing have to learn automation?Talk about the value of automated testing in my eyes
Cookie simulation login "recommended collection"
ccs软件的使用(靠谱挣钱的app软件)
JSON common annotations
如何在 TiDB Cloud 上使用 Databricks 进行数据分析 | TiDB Cloud 使用指南
【Vue.js 3.0源码】KeepAlive 组件:如何让组件在内存中缓存和调度?
[机缘参悟-53]:《素书》-3-修身养志[求人之志章第三]
【回归预测-lssvm分类】基于最小二乘支持向量机lssvm实现数据分类代码
pytorch与keras的相互转换(代码以LeNet-5为例)
超T动力 盈运天下——中国重汽黄河/豪沃WP14T产品首发荣耀上市!
四大首搭加持,美学、安全、操控、效率优势明显,比亚迪海豹售价20.98万元起售!
华为7年经验的软件测试总监,给所有想转行学软件测试的朋友几点建议