简单的条件语句应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36470920/article/details/79293388

今天晚上的程序题比较简单,是Hankranker上的算法题目

主要是让对于输入的一大串指令操作集合做处理

比如给你一系列的输入,这些输入都是对于一个列表的增删改查操作

最后让你遇到print语句就输出

程序很简单,但是从简单的做起,不能眼高手低

我的思考方法也不是一帆风顺的,刚开始我觉得按照一个for循环,每次循环体内直接在输入后就操作了,这是不对的,因为当在循环体内部输入一条指令的时候,我们要是提前操作了,在输出时序上可能会有偏差,比如前三条指令时增删改,第四条指令是输出,可是我们还要输入第五条指令的时候,程序就已经输出来了前四条指令的操作结果,这样如果操作数足够多的话怎么办?是不是就乱了?所以我的方法是先把所有的指令都放在一个指令操作列表中,然后等待所有的指令都放在了列表里面之后,再逐个执行,这样虽然使得空间的复杂度变大了,但是鲁棒性提高了。

本算法的时间复杂度为O(n)空间复杂度为O(n)

下面是我的代码;

#-*-Coding:UTF-8-*-
#先将这n条指令放在一个指令列表里
# 然后依次执行,而不是进来一个执行一个
import os
if __name__ == '__main__':
    N = int(input())
    result = [] #result 是最后要求的目标列表
    list = [] #list是存放指令的列表集
    for i in range(N):
        list.append(input())
    # print(list)
    for i in range(N):
        s = list[i].split(' ')
        judgement = s[0]
        if judgement == 'insert':
            pos, m = int(s[1]), int(s[2])
            # print(m,pos)
            result.insert(pos, m)
        if judgement == 'print':
            print(result)
        if judgement == 'remove':
            m = int(s[1])
            result.remove(m)
        if judgement == 'append':
            m = int(s[1])
            result.append(m)
        if judgement == 'sort':
            result.sort()
        if judgement == 'pop':
            result.pop()
        if judgement == 'reverse':
            result.reverse()

运行结果如下:

D:\python3.6.4\python.exe "D:/python/python LeetCode 程序集/ListPrint.py"

12
insert 0 5
insert 1 10
insert 0 6
print
remove 6
append 9
append 1
sort
print
pop
reverse
print


[6, 5, 10]
[1, 5, 9, 10]
[9, 5, 1]

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/qq_36470920/article/details/79293388
今日推荐