所有蚂蚁掉下来前的最后一刻

Posted sbb-first-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了所有蚂蚁掉下来前的最后一刻相关的知识,希望对你有一定的参考价值。

有一块木板,长度为 n 个 单位 。一些蚂蚁在木板上移动,每只蚂蚁都以 每秒一个单位 的速度移动。其中,一部分蚂蚁向 左 移动,其他蚂蚁向 右 移动。

当两只向 不同 方向移动的蚂蚁在某个点相遇时,它们会同时改变移动方向并继续移动。假设更改方向不会花费任何额外时间。

而当蚂蚁在某一时刻 t 到达木板的一端时,它立即从木板上掉下来。

给你一个整数 n 和两个整数数组 left 以及 right 。两个数组分别标识向左或者向右移动的蚂蚁在 t = 0 时的位置。请你返回最后一只蚂蚁从木板上掉下来的时刻。

技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 

 

解题思路
读了大神的解释,只用考虑左边掉落下来和右边掉落下来的时间,关于相撞可以忽略掉。下边是大神的
解释。
两个蚂蚁相撞之后会互相调头,其实只要想成如果每只蚂蚁都长得一模一样,那么是不是蚂蚁碰撞的调头 就等于 穿透了?

知道了这一点,那么就可以直接让蚂蚁直接穿透爬行就好了

那么题目就变成了求单只最晚落地的蚂蚁,与碰撞无关

作者:imcover
链接:https://leetcode-cn.com/problems/last-moment-before-all-ants-fall-out-of-a-plank/solution/ma-yi-you-mei-de-pa-pa-pa-pa-by-imcover/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码

#define Max(a,b) a>b?a:b
int getLastMoment(int n, int* left, int leftSize, int* right, int rightSize){
int i,max=-1;
for(i=0;i<leftSize;i++)
{
max=Max(max,left[i]);
}
for(i=0;i<rightSize;i++)
{
max=Max(max,n-right[i]);
}
return max;
}

作者:tony-ht
链接:https://leetcode-cn.com/problems/last-moment-before-all-ants-fall-out-of-a-plank/solution/cyu-yan-guan-yu-ma-yi-pa-pa-pa-by-tony-ht/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以上是关于所有蚂蚁掉下来前的最后一刻的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1503. 所有蚂蚁掉下来前的最后一刻

思维水题 poj1852

poj_1852_Ants(复杂问题简单化)

UVA-10714 Ants---蚂蚁模拟

蚂蚁和蜜蜂的故事

2017辽宁冬令营-4.蚂蚁