亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

給定堆棧中的最大可能頂部(日產面試問題)

給定堆棧中的最大可能頂部(日產面試問題)

慕的地6264312 2023-10-18 20:55:26
問題給你一堆N整數。在一次操作中,您可以從堆棧中彈出一個元素,也可以將任何彈出的元素推入堆棧。在執行精確操作后,您需要最大化堆棧頂部的元素K。如果執行操作后堆棧變空K,并且沒有其他方法使堆棧不為空,則打印 -1。輸入格式:輸入的第一行由兩個空格分隔的整數N和組成K。輸入的第二行由N空格分隔的整數組成,表示堆棧的元素。第一個元素代表棧頂,最后一個元素代表棧底。輸出格式:執行精確操作后打印堆棧的最大可能頂部元素K。輸入:6 41 2 4 3 3 5預期輸出:4預期輸出的說明:在 3 個操作中,我們刪除1, 2, 4,在第四個操作中,我們推4回堆棧。因此,4就是答案。我的代碼: def stack_operations(list1, k):    stack = []    list1.reverse()    for number in list1:        stack.append(number)     if k == len(list1) or len(list1) == 1:        print("-1")    elif k > len(list1):        print(max(list1))    else:        list2 = []        for i in range(k - 1):            list2.append(stack.pop())        max_element = max(list2)        print(max_element)n, k = map(int, input().split())num = list(map(int, input().split()))stack_operations(num, k)我的疑問:我的代碼適用于示例輸入/輸出,但它顯示所有其他測試用例的運行時錯誤。我在這里做錯了什么?是邏輯錯誤還是代碼錯誤?問題出在哪里?
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

我認為你的解決方案過于復雜化了。我不想嘗試調試代碼,而是想提出一種完全不同的思考問題的方式,這有望產生單行分析解決方案。

解讀1

在這個版本中,我假設您只能推回最后彈出的元素。

假設問題中有堆棧,存儲在 list 中s

s = [1, 2, 4, 3, 3, 5]

如果k = 4,則答案很簡單:pop 3,replace 1。這種瑣碎的重要之處在于,它向您表明,除非下一個元素大于 中的所有內容,否則s[:k - 1]您必須將自己限制在第一個k - 1元素。但您也無法訪問所有這些。例如:

s = [1, 5, 4, 3, 3, 5]

如果出現以下情況,則無法到達5堆棧頂部k = 4:每次獲取和替換都是兩個操作。因此,這意味著您只能訪問最多 的所有其他元素k - 1。換句話說,對于k=4,您可以從x以下標記的元素中進行選擇:

s = [x, ., x, ., x, ., ., ., ...]

對于k=5,域如下所示:

s = [., x, ., x, ., x, ., ., ., ...]

希望這種模式相當明顯:

solution = max(s[k % 2:k + 1:2])

解讀2

在此版本中,我假設您可以推回彈出的任何項目。

再看看k=4

s = [1, 2, 4, 3, 3, 5]

1, 2, 4您可以在前三個 ( ) 操作中彈出k - 1。第四個操作可以是替換其中一項或公開k + 1st 元素。所以你可以訪問第一個k - 1元素和 st k + 1,但不能訪問kth:

solution = max(max(s[:k - 1]), s[k])

筆記

在這兩種情況下,處理k < n都留給讀者作為練習。例如,如果n == 1,只有當 時才有解k % 2 == 0,等等。


查看完整回答
反對 回復 2023-10-18
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

我無法創建評論(抱歉),但“n”未定義。除非當您檢查“n == 1”時缺少代碼,否則會引發錯誤。



查看完整回答
反對 回復 2023-10-18
  • 2 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號