(適合初學者)下一個更大元素
(適合初學者)下一個更大元素
今天是我寫部落格第三天,希望自己能夠一直堅持下去,今天練習的題目有點小小難,研究好久,開始利用比較暴力的方法進行寫的,我又研究一下,單調棧,沒感覺到差到哪裡了,下面我們們一起看題吧:
給定兩個 沒有重複元素 的陣列 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每個元素在 nums2 中的下一個比其大的值。
nums1 中數字 x 的下一個更大元素是指 x 在 nums2 中對應位置的右邊的第一個比 x 大的元素。如果不存在,對應位置輸出 -1 。
示例 1:
輸入: nums1 = [4,1,2], nums2 = [1,3,4,2].
輸出: [-1,3,-1]
解釋:
對於num1中的數字4,你無法在第二個陣列中找到下一個更大的數字,因此輸出 -1。
對於num1中的數字1,第二個陣列中數字1右邊的下一個較大數字是 3。
對於num1中的數字2,第二個陣列中沒有下一個更大的數字,因此輸出 -1。
示例 2:
輸入: nums1 = [2,4], nums2 = [1,2,3,4].
輸出: [3,-1]
解釋:
對於 num1 中的數字 2 ,第二個陣列中的下一個較大數字是 3 。
對於 num1 中的數字 4 ,第二個陣列中沒有下一個更大的數字,因此輸出 -1 。
以上一定要仔細看,慢慢理解上面的,才能懂得這個演算法的核心,下面看看方法一:
方法一:
class Solution1:
def nextGreaterElement(self, nums1, nums2):
dic = {}#建立字典
for i in range(len(nums2)):#迴圈遍歷
j = i + 1
while j < len(nums2) and nums2[i] >= nums2[j]:
j += 1
if j < len(nums2) and nums2[i] < nums2[j]:
dic[nums2[i]] = nums2[j]
return [dic.get(x, -1) for x in nums1]
s=Solution3()
num1=[4,1,3]
num2=[3,1,4,2]
print(s.nextGreaterElement(num1,num2))
執行結果:D:\python\python.exe C:/Users/ASUS/PycharmProjects/pythonProject1/最大數.py
[-1, 4, 4]
方法二:
class Solution3:
def nextGreaterElement(self, nums1, nums2):
dic, stack = {}, []
for i in range(len(nums2)):
while stack and stack[-1] < nums2[i]:
dic[stack.pop()] = nums2[i]
stack.append(nums2[i])
return [dic.get(x, -1) for x in nums1]
s=Solution3()
num1=[4,1,3]
num2=[3,1,4,2]
print(s.nextGreaterElement(num1,num2))
執行結果:D:\python\python.exe C:/Users/ASUS/PycharmProjects/pythonProject1/最大數.py
[-1, 4, 4]
相關文章
- [Leetcode]下一個更大元素IILeetCode
- LC_496. 下一個更大元素 I
- 503. 下一個更大元素 II(中等)
- 力扣-96. 下一個更大元素 I力扣
- Python適合初學者學習嗎?Python
- 適合ionic初學者的小專案
- 適合Angular初學者的小專案Angular
- 程式碼隨想錄day48 || 739, 每日溫度 496, 下一個更大元素 I 503, 下一個更大元素II
- LeetCode-496-下一個更大元素 ILeetCode
- Leetcode 496. 下一個更大元素 ILeetCode
- 初學者轉行學Python合適還是C語言合適?PythonC語言
- 初學者學習Linux選擇哪個發行版本合適?Linux
- 推薦10個適合初學者的 HTML5 入門教程HTML
- c語言初學者用vs還是vscode vs和vscode哪個適合初學者C語言VSCode
- 哪種程式語言適合初學者學習
- PHP檔案及執行(適合PHP初學者)PHP
- 最適合初學者的語言是什麼?
- 一個更適合Java初學者的輕量級開發工具:BlueJJava
- 最適合於初學者的 Linux 發行版Linux
- 適合初學者的java書籍,一定要碼Java
- Java最最基礎的知識(適合初學者看)Java
- Linux哪個發行版本適合初學者?Linux基礎入門!Linux
- Java基礎視訊教程(最適合初學者入門)Java
- Docker 入門概述(適合初學者瞭解相關概念)Docker
- 適合初學者學java技術的書籍推薦!Java
- Python真的適合初學者嗎?原因是什麼?Python
- 適合初學者的who 命令的解釋與示例指南
- 一個適合初學者學習Web開發的網站(入門到精通)Web網站
- 適合零基礎初學者學習的Java順序Java
- Python語言初學者?風變程式設計更適合Python程式設計
- Python適合初學者或者0基礎小白學習嗎?Python
- java初學者(零基礎如何入門),我適不適合學習JAVA?Java
- 程式碼隨想錄演算法訓練營第五十三天 | 739.每日溫度 496.下一個更大的元素I 503.下一個更大的元素II演算法
- 為什麼Python適合初學者 學Python大概要多久Python
- 怎樣脫用 Aspack2.12 加的殼(適合初學者)
- 適合 Kubernetes 初學者的一些實戰練習 (三)
- 適合 Kubernetes 初學者的一些實戰練習 (四)
- 適合 Kubernetes 初學者的一些實戰練習(二)