第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

堆棧和隊(duì)列亞馬遜面試問題

堆棧和隊(duì)列亞馬遜面試問題

慕神8447489 2023-12-26 14:53:21
描述給定一個(gè)包含 n 個(gè)整數(shù)的數(shù)組 A。您必須創(chuàng)建一個(gè)給定整數(shù)的隊(duì)列和堆棧。隊(duì)列應(yīng)僅包含素?cái)?shù),堆棧應(yīng)僅包含合數(shù)。數(shù)組中的所有數(shù)字都是 。形成堆棧和隊(duì)列的規(guī)則是您應(yīng)該能夠使用彈出和出隊(duì)操作生成數(shù)組。注:請仔細(xì)閱讀本說明假設(shè)數(shù)組 A 包含 5 個(gè)整數(shù): 7 , 21 , 18 , 3 , 12 ,那么隊(duì)列和堆棧的內(nèi)容將為: 隊(duì)列 : 7 , 3 堆棧 : 12 , 18 , 21 現(xiàn)在,如果您遵循堆棧和隊(duì)列的規(guī)則,那么您會(huì)發(fā)現(xiàn)可以使用堆棧的彈出操作和隊(duì)列的出列操作來生成數(shù)組,如下所示:dequeue from queue : 7pop from stack : 7 , 21pop from stack : 7 , 21 , 18dequeue from queue : 7 , 21 , 18 , 3pop from stack : 7 , 21 , 18 , 3 , 12因此,對于每個(gè)數(shù)組 A,您必須在第一行中打印隊(duì)列的內(nèi)容,在第二行中打印堆棧的內(nèi)容。輸入格式 第一行包含一個(gè)整數(shù) n 作為輸入,表示數(shù)組中整數(shù)的總數(shù)。下一行包含 n 個(gè)空格分隔的整數(shù),表示數(shù)組 A 的元素。您的輸出應(yīng)打印兩個(gè) array ,每行一個(gè)。第一行應(yīng)該是隊(duì)列的內(nèi)容,第二行應(yīng)該是堆棧的內(nèi)容。輸出格式 第一行打印隊(duì)列的內(nèi)容,第二行打印堆棧的內(nèi)容。樣本輸入57 21 18 3 12樣本輸出7 3 12 18 21 我的代碼backwas = input()num1 = list(map(int, input().split()))dic = {}for num in num1:    output = []    for i in range(2,num+1):        if num%i == 0:            output.append(i)        for item in set(output):            output1 = list(set(output))            dic[num] = output1prime = []comp = []for num in num1:    list1 = []    list1 = list(dic[num])    if len(list1) != 1:        comp.append(str(num))    else:        prime.append(str(num))   print(" ".join(prime))print(" ".join(comp))我的代碼有問題如果你讀得正確,你會(huì)立即注意到這個(gè)問題的困難部分是以正確的順序創(chuàng)建兩個(gè)列表,也就是說,當(dāng)對它們進(jìn)行一些操作時(shí),它們會(huì)返回原始列表。我的代碼無法做到這一點(diǎn)。我應(yīng)該如何解決這個(gè)問題?
查看完整描述

2 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

問題的要點(diǎn)要求給定一系列空格分隔的整數(shù),將列表分為存儲(chǔ)在隊(duì)列中的素?cái)?shù)和存儲(chǔ)在堆棧中的復(fù)合整數(shù)。按 FIFO 順序輸出隊(duì)列中的素?cái)?shù),并按 LIFO 順序輸出堆棧中的復(fù)合整數(shù)。

隊(duì)列是線性先進(jìn)先出 (FIFO) 數(shù)據(jù)結(jié)構(gòu)。如果我們使用append()來實(shí)現(xiàn)enqueue(),使用pop()來實(shí)現(xiàn)dequeue(),那么List數(shù)據(jù)結(jié)構(gòu)就可以用作隊(duì)列。然而,列表為此目的非常慢,因?yàn)樵陂_頭插入或刪除元素需要 O(n) 時(shí)間。使用集合 mnodule 中的出隊(duì)類是首選隊(duì)列實(shí)現(xiàn)機(jī)制,因?yàn)樽芳雍蛷棾霾僮餍枰?O(1) 時(shí)間。

堆棧是線性后進(jìn)/先出 (LIFO) 或先入/后出 (FILO) 數(shù)據(jù)結(jié)構(gòu)。與隊(duì)列類似,列表數(shù)據(jù)結(jié)構(gòu)可以用來實(shí)現(xiàn)堆棧,但是與隊(duì)列情況一樣,如果列表很長,就會(huì)出現(xiàn)性能問題。因此,出隊(duì)類是實(shí)現(xiàn)堆棧的首選。

根據(jù)指令,第一行輸入給出第二行輸入中的整數(shù)個(gè)數(shù)。
第二行由空格分隔的整數(shù)組成。輸出由兩行組成。

  • 第一個(gè)輸出行應(yīng)按照輸入的順序顯示輸入中的素?cái)?shù)。

  • 第二行應(yīng)以與輸入相反的順序顯示輸入中的合數(shù)。

這是我解決問題的方法:

#Utility to detect a Prime

def is_prime(n: int) -> bool:

    """

     Integer -> Boolean

     returns True if n is a prime number

    """

    if n == 2 or n == 3: return True

    if n < 2 or n%2 == 0: return False

    if n < 9: return True

    if n%3 == 0: return False

    r = int(sqrt(n))

    f = 5

    while f <= r:

        if n%f == 0:

            return False

        if n%(f+2) == 0:

            return False

        f +=6

    return True

使用列表方法


# Implementation with Lists assuming instr is list of integers

def list_method(instr: str):

    qlist = []

    stklist = []

    inLst = list(map(lambda x:int(x) ,instr.split()))

    for n in inLst:

        if is_prime(n):

            qlist.append(n)

        else:

            stklist.append(n)

    print(" ".join(map(lambda x: str(x), qlist)))

    print(" ".join(map(lambda x: str(x), stklist[::-1])))

使用出隊(duì)類


from collections import deque

def queue_method(instr: str):

    q = deque()

    stk = deque()

    inLst = list(map(lambda x:int(x) ,instr.split()))

    for n in inLst:

        if is_prime(n):

            q.append(n)

        else:

            stk.append(n)

    print(" ".join([str(q.popleft()) for i in range(len(q))]))

    print(" ".join([str(stk.pop()) for i in range(len(stk))]))


查看完整回答
反對 回復(fù) 2023-12-26
?
蝴蝶刀刀

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

這是使用埃拉托斯特尼篩法和 2 個(gè)數(shù)組的簡單方法。


num1 = [7,21,18,3,12]    # your list

n = max(num1)

prime = [True for i in range(n+1)] 

p = 2

while (p * p <= n):  #creating a Sieve using standard operations

    if (prime[p] == True): 

        for i in range(p * p, n+1, p): 

            prime[i] = False

    p += 1


prim, comp = [], []

for i in num1:

    if prime[i]:

        prim.append(i)

    else:

        comp.append(i)

for i in prim:

    print(i, end = " ")

print()

for i in comp[::-1]:

    print(i, end = " ")

print()


查看完整回答
反對 回復(fù) 2023-12-26
  • 2 回答
  • 0 關(guān)注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)