1. 程式人生 > >Python演算法入門——第2章 1,佇列

Python演算法入門——第2章 1,佇列

有一串經過加密的數字需要解密。解密規則是這樣的:首先將第 1 個數刪除,緊接著將第 2 個數放到這串數的末尾,再將第 3 個數刪除並將第 4 個數放到這串數的末尾,再將第 5 個數刪除……直到剩下最後一個數,將最後一個數也刪除。
 

class Solution():
    '''
    去除重複數字
    從大到小排序
    '''
    def DuiLie(self, x):
        #將字串列表化,便於進行append操作
        queue = [i for i in x]
        a = list()        
        head,tail = 1,len(queue)        
        while head < tail:
            queue.append(queue[head])
            head += 2
            
        for i in range(len(queue)):
            if i % 2 == 0:
                a.append(queue[i])
        return a

if __name__ == "__main__":
    a = Solution()
    print(a.DuiLie('631758924'))

下面是c語言程式碼

#include <stdio.h>
int main()
{
    int q[102]={0,6,3,1,7,5,8,9,2,4},head,tail;
    int i;
    //初始化佇列
    head=1;
    tail=10; //佇列中已經有9個元素了, tail指向隊尾的後一個位置
    while(head<tail) //當佇列不為空的時候執行迴圈
    {
        //列印隊首並將隊首出隊
        printf("%d ",q[head]);
        head++;
        //先將新隊首的數新增到隊尾
        q[tail]=q[head];
        tail++;
        //再將隊首出隊
        head++;
    }
    getchar();getchar();
    return 0;
}