Bilibili在线笔试

admin 2019-08-14 15:03:40 0 0 Algorithm 291 复制链接

1565664724(1).jpg


Bilibili在线笔试题


笔试题二:

def move_zero_to_rear(arr):

    for index in range(len(arr) - 1):

        for op_index in range(len(arr) - 1 - index):

            if arr[op_index] == 0:

                arr[op_index], arr[op_index + 1] = arr[op_index + 1], arr[op_index]



if __name__ == "__main__":

    arr = [0, 0, 00, 1, 2, 3, 4, 0, 0]

    move_zero_to_rear(arr)

    print(arr)


Output:

>>>[1, 2, 3, 4, 0, 0, 0, 0, 0, 0]



这道题当时没做出来,当时想的是  从头遍历,每碰到0,就拿他跟最后位置的元素交换,然后后面的索引-=1,重复上述步骤,但又想了想,后面的元素是0怎么办?什么时候终止?然后瞬间没了头绪。


面试结束后想了下这道题,这不就是冒泡排序的思想吗。只不过冒的是0,不打乱其他元素排序、不额外申请内存空间,冒泡排序都可以实现。


可能自己最近才接触算法,运用的还是不熟练,当时就没有头绪。算法还是挺有意思的,以后要加强,能锻炼思维能力,就好像下象棋,每走一步要考虑到各种情况。


评论(0)

    还没有评论,快来抢沙发吧!