zoukankan      html  css  js  c++  java
  • 小行星碰撞 Asteroid Collision

    2018-08-07 11:12:01

    问题描述:

    问题求解:

    使用一个链表模拟栈,最后的状态一定是左侧全部是负值,表示的是向左飞行,右侧的全部是正值,表示的是向右飞行。

    遍历整个数组,对于每个读到的数字,如果是正值则直接加入链表中,如果是负值,则需要判断链表中末尾的数字如果也是负值,则表示目前链表中全部向左飞行,则加入,如果说此时链表中最后的数字为正值,则表示会相撞,需要进行比较判断。

    这个题目的解法也给出了如果将Colleaction转化为int[],可以使用colleaction.stream().mapToInt(i -> i).toArray()来进行转换。

        public int[] asteroidCollision(int[] asteroids) {
            LinkedList<Integer> res = new LinkedList<>();
            for (int i = 0; i < asteroids.length; i++) {
                if (asteroids[i] > 0 || res.size() == 0 || res.getLast() < 0) {
                    res.add(asteroids[i]);
                }
                else if (res.getLast() <= -asteroids[i]) {
                    if (res.pollLast() < -asteroids[i]) i--;
                }
            }
            return res.stream().mapToInt(i -> i).toArray();
        }
    
  • 相关阅读:
    常用辅助类(ContDownLatch、CyclicBarrier、Semaphore)
    Redis
    SpringBoot
    微服务概述
    数据库 子查询和分页查询
    数据库基础语句,聚合函数,练习
    数据库基础知识

    for循环的类型以及while循环
    C#编程循环练习
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/9435893.html
Copyright © 2011-2022 走看看