Python演算法入門——第2章 1,佇列
阿新 • • 發佈:2018-11-07
有一串經過加密的數字需要解密。解密規則是這樣的:首先將第 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; }