zoukankan      html  css  js  c++  java
  • 所有蚂蚁掉下来前的最后一刻

    有一块木板,长度为 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)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    Struts2 采用Convention-plugin 实现零配置
    xml中批量新增数据或者批量修改数据
    Linux基础笔记_05
    Linux基础笔记_03
    Linux基础笔记_02
    Linux基础笔记_01
    玩转spring boot——websocket
    获取一天中的起始时间与结束时间
    《浅谈架构之路:前后端分离模式》
    区域语言与区域语言包对照关系表
  • 原文地址:https://www.cnblogs.com/sbb-first-blog/p/13246514.html
Copyright © 2011-2022 走看看