给定一个由前进方向(东南西北)组成的数组,要求化简使得不会走没用的路,比如先向南再向北就是浪费时间。

https://www.codewars.com/kata/directions-reduction/python

一道简单的利用栈的题。

主要思想是:

线性扫描,如果当前元素跟栈顶元素可以相互抵消,就直接出栈;如果当前栈为空或者不能抵消,当前元素就入栈。最后返回栈。

def dirReduc(arr):
    dict = {"NORTH":"SOUTH","SOUTH":"NORTH","EAST":"WEST","WEST":"EAST"}
    res = []
    for i in arr:
        if res and dict[i] == res[-1]:
            res.pop()
        else:
            res.append(i)
    return res
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐