• 算法----小行星碰撞


    题目

    给定一个整数数组 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 。

    提示:

    2 <= asteroids.length <= 104
    -1000 <= asteroids[i] <= 1000
    asteroids[i] != 0

    解决思路

    这种碰撞会失去元素的,用栈的数据结构去做就可以

    解决方法

        fun asteroidCollision(asteroids: IntArray): IntArray {
            val linkedList = LinkedList<Int>()
            asteroids.forEach {
                var needPush = true
                while (!linkedList.isEmpty() && it < 0 && linkedList.peek() > 0) {
                    if (it.absoluteValue <= linkedList.peek().absoluteValue) {
                        needPush = false
                        break
                    }
                    if (it.absoluteValue >= linkedList.peek().absoluteValue) {
                        linkedList.pop()
                    }
                }
                if (needPush) {
                    linkedList.push(it)
                }
            }
            linkedList.reverse()
            return linkedList.toIntArray()
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    总结

    1.注意正负代表不同的方向,一定要注意
    2.代码结构优化,也是要动点脑子的
    3.再简单,再难 做了才知道自己哪里不足

    东隅已逝 桑榆非晚
    鼓起勇气,从头再来
    不要被任何事情吓到 静下心来 做就是了
    太累了就休息休息,休息好了,洗把脸,继续赶路

  • 相关阅读:
    SpringBoot SpringBoot 开发实用篇 1 热部署 1.4 关闭热部署功能
    【C++进阶之路】第三篇:二叉搜索树 & kv模型
    Numpy学习记录
    Kubernetes Service对象
    如何设置CUDA Kernel中的grid_size和block_size?
    早停止(Early Stopping)-PyTorch版本(代码使用教程)
    四十九.强化学习基础
    2.1.9.4 MySQL udf提权
    2022-06-29 工作记录--React-函数式组件 useState的使用 + useEffect的使用 + 监听事件的使用
    PowerDesigner 连接 MYSQL
  • 原文地址:https://blog.csdn.net/u013270444/article/details/134464949