美文网首页
剑指 Offer II 037. 小行星碰撞

剑指 Offer II 037. 小行星碰撞

作者: 邦_ | 来源:发表于2022-06-10 11:11 被阅读0次

    自己想的 效率有点低 可能是因为递归了下自己= =。。

    func asteroidCollision(_ asteroids: [Int]) -> [Int] {
            var stack = Array<Int>()
            let len = asteroids.count
            for  i in 0..<len {
                
                let num = asteroids[i]
                if stack.isEmpty {
                    //空的话 先入栈
                    stack.append(num)
                } else {
                    let num1 = stack.popLast() ?? 0
                    //前一个小于0 那么后一个大于零或者小于零都不会发生碰撞 可以直接放进去
                    if num1 < 0 {
                        stack.append(num1)
                        stack.append(num)
                    }
                    //说明前一个是正数  那么后边一个是正数的话方向相同 后一个如果是负数的话  会发生碰撞
                    else{
                        if num > 0 {
                            stack.append(num1)
                            stack.append(num)
                        }
                        //发生碰撞
                        else {
                            if num1 + num > 0 {
                                
                                stack.append(num1)
                                
                            }
                            else if num1 + num < 0{
                                
                                stack.append(num)
                                stack = asteroidCollision(stack)
    
                            }
                            
                        }
                        
                        
                    }
                    
                    
                }
                
                
                
            }
            
            return stack
        
        }
    
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:剑指 Offer II 037. 小行星碰撞

          本文链接:https://www.haomeiwen.com/subject/hazsertx.html