国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

這篇具有很好參考價值的文章主要介紹了LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

Halo,這里是Ppeua。平時主要更新C語言,C++,數(shù)據(jù)結構算法......感興趣就關注我吧!你定不會失望。

??個人主頁:主頁鏈接

??算法專欄:專欄鏈接

?????我會一直往里填充內容噠!

??LeetCode專欄:專欄鏈接?

????目前在刷初級算法的LeetBook 。若每日一題當中有力所能及的題目,也會當天做完發(fā)出

??代碼倉庫:Gitee鏈接

??點擊關注=收獲更多優(yōu)質內容??

?

目錄

題目:1019.?鏈表中的下一個更大節(jié)點

?編輯題解:

代碼實現(xiàn):

完結撒花:


LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

題目:1019.?鏈表中的下一個更大節(jié)點

題解:

簡單來說,就是找這個節(jié)點前面離他最近的,且比他大的值.

我們可以把這個鏈表畫成這樣.

LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

那么從右向左遍歷,尋找離他最近的比他大的那個數(shù)是否就可以看成:找把他擋住的那個數(shù).

我們從后向前遍歷這個鏈表,

然后五沒有任何數(shù)擋住他,則放入0? ? ans:[0]

一被五擋住了,所以一最近的比他大的數(shù)為五? ?ans:[0,5]

二也被五擋住了,所以二最近的比他大的數(shù)也為五 ans[0,5,5]

再來看一個例子:

LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

依舊先把值的圖畫出來.LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

我們從后向前遍歷這個鏈表,

五沒有任何數(shù)擋住他,則放入0? ? ans:[0]

三被五擋住了,所以三最近的比他大的數(shù)為五? ?ans:[0,5]

四也被五擋住了,所以四最近的比他大的數(shù)也為五 ans:[0,5,5]

七沒有任何數(shù)擋住他,則放入0? ans:[0,5,5,0]

二被七擋住了,所以離二最近比其大的數(shù)字為七 ans:[0,5,5,0,7]

因為我們是反向遍歷的,所以最后要將ans 翻轉一下就是答案ans:[7,0,5,5,0]

總結下我們這個過程,就是一個單調棧

我們將最后一個元素放入數(shù)據(jù)頂部,然后在答案數(shù)組中存入0(因為是第一個)

之后依次比較

若這個數(shù)小于頂部數(shù)據(jù),則說明離他最近比他大的就是頂部數(shù)據(jù).將其存入棧

若這個數(shù)大于頂部數(shù)據(jù),則說明頂部數(shù)據(jù)需要更新了:將頂部數(shù)據(jù)依次移出,并比較一下其是否還小于這個數(shù).若大于則說明離這個數(shù)最近的比他大的數(shù)被找到了.

則將頂部數(shù)據(jù)放入棧.

LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

當然最開始要先將鏈表逆轉一下 否則無法從后向前遍歷.

LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧

代碼實現(xiàn):

class Solution {
public:
? ? vector<int> nextLargerNodes(ListNode* head) {
? ? ? ? ListNode*prev=NULL;
? ? ? ? ListNode*cur=head;
? ? ? ? vector<int>ans;
? ? ? ? while(cur!=NULL){
? ? ? ? ? ? ListNode*tmp=cur->next;
? ? ? ? ? ? cur->next=prev;
? ? ? ? ? ? prev=cur;
? ? ? ? ? ? cur=tmp;
? ? ? ? }
? ? ? ? head=prev;
? ? ? ? stack<int>st;
? ? ? ? while(head)
? ? ? ? {
? ? ? ? ? ? if(st.empty())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ans.push_back(0);
? ? ? ? ? ? ? ? st.push(head->val);
? ? ? ? ? ? }
? ? ? ? ? ? else if(head->val<st.top())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ans.push_back(st.top());
? ? ? ? ? ? ? ? st.push(head->val);
? ? ? ? ? ? }
? ? ? ? ? ? else if(head->val>=st.top()){
? ? ? ? ? ? ? ? while(!st.empty())
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if(st.top()<=head->val)
? ? ? ? ? ? ? ? ? ? ? ? st.pop();
? ? ? ? ? ? ? ? ? ? else break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if(st.empty())
? ? ? ? ? ? ? ? ? ? ans.push_back(0);
? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ans.push_back(st.top());
? ? ? ? ? ? ? ? st.push(head->val);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? head=head->next;
? ? ? ? }
? ? ? ? reverse(ans.begin(),ans.end());
? ? ? ? return ans;
? ? }
};

完結撒花:

??本篇博客的內容【LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧】已經(jīng)結束。

??若對你有些許幫助,可以點贊、關注、評論支持下博主,你的支持將是我前進路上最大的動力。

??若以上內容有任何問題,歡迎在評論區(qū)指出。若對以上內容有任何不解,都可私信評論詢問。

??諸君,山頂見!文章來源地址http://www.zghlxwxcb.cn/news/detail-429550.html

到了這里,關于LeetCode每日一題 1019. 鏈表中的下一個更大節(jié)點 --單調棧的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • (鏈表) 劍指 Offer 52. 兩個鏈表的第一個公共節(jié)點 ——【Leetcode每日一題】

    (鏈表) 劍指 Offer 52. 兩個鏈表的第一個公共節(jié)點 ——【Leetcode每日一題】

    難度:簡單 輸入兩個鏈表,找出它們的第一個公共節(jié)點。 如下面的兩個鏈表: 在節(jié)點 c1 開始相交。 示例 1: 輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 輸出:Reference of the node with value = 8 輸入解釋:相交節(jié)點的值為 8 (注意,如果兩個列表相交則

    2024年02月15日
    瀏覽(27)
  • 每日一題——判斷鏈表中是否有環(huán)

    每日一題——判斷鏈表中是否有環(huán)

    題目 判斷給定的鏈表中是否有環(huán)。如果有環(huán)則返回true,否則返回false。 數(shù)據(jù)范圍:鏈表長度 0≤n≤10000,鏈表中任意節(jié)點的值滿足 ∣val∣=100000 要求:空間復雜度 O(1),時間復雜度 O(n) 輸入分為兩部分,第一部分為鏈表,第二部分代表是否有環(huán),然后將組成的head頭結點傳入到

    2024年02月16日
    瀏覽(21)
  • 每日一題(鏈表中倒數(shù)第k個節(jié)點)

    每日一題(鏈表中倒數(shù)第k個節(jié)點)

    鏈表中倒數(shù)第k個結點_牛客網(wǎng) (nowcoder.com) 思路: 如下圖所示:此題仍然定義兩個指針,fast指針和slow指針,假設鏈表的長度是5,k是3,那么倒數(shù)第3個節(jié)點就是值為3的節(jié)點。那么我們可以先讓fast指針向后走k次,也就是3次。slow指針仍然指向頭節(jié)點。 當fast向后走3步之后,如下圖

    2024年02月10日
    瀏覽(20)
  • 【每日一題】填充每個節(jié)點的下一個右側節(jié)點指針 II

    【每日一題】填充每個節(jié)點的下一個右側節(jié)點指針 II

    【BFS】【樹】【2023-11-03】 117. 填充每個節(jié)點的下一個右側節(jié)點指針 II 為二叉樹中的每一個節(jié)點填充下一個節(jié)點。 本題題目意思明確,我們只需要遍歷二叉樹每一層的節(jié)點,將節(jié)點的 next 指針指向同一層的下一個節(jié)點即可,屬于二叉樹層序遍歷的基礎題。 實現(xiàn)代碼 復雜度分

    2024年02月05日
    瀏覽(21)
  • (鏈表) 143. 重排鏈表 ——【Leetcode每日一題】

    (鏈表) 143. 重排鏈表 ——【Leetcode每日一題】

    難度:中等 給定一個單鏈表 L 的頭節(jié)點 head ,單鏈表 L 表示為: L 0 L_0 L 0 ? → L 1 L_1 L 1 ? → … → L n ? 1 L_{n-1} L n ? 1 ? → L n L_n L n ? 請將其重新排列后變?yōu)椋?L 0 L_0 L 0 ? → L n L_n L n ? → L 1 L_1 L 1 ? → L n ? 1 L_{n-1} L n ? 1 ? → L 2 L_2 L 2 ? → L n ? 2 L_{n-2} L n ?

    2024年02月08日
    瀏覽(21)
  • ( 鏈表) 203. 移除鏈表元素 ——【Leetcode每日一題】

    ( 鏈表) 203. 移除鏈表元素 ——【Leetcode每日一題】

    難度:簡單 給你一個鏈表的頭節(jié)點 head 和一個整數(shù) val ,請你刪除鏈表中所有滿足 Node.val == val 的節(jié)點,并返回 新的頭節(jié)點 。 示例 1: 輸入:head = [1,2,6,3,4,5,6], val = 6 輸出:[1,2,3,4,5] 示例 2: 輸入:head = [], val = 1 輸出:[] 示例 3: 輸入:head = [7,7,7,7], val = 7 輸出:[] 提示:

    2024年02月06日
    瀏覽(35)
  • (鏈表專題) 725. 分隔鏈表 ——【Leetcode每日一題】

    (鏈表專題) 725. 分隔鏈表 ——【Leetcode每日一題】

    給你一個頭結點為 head 的單鏈表和一個整數(shù) k ,請你設計一個算法將鏈表分隔為 k 個連續(xù)的部分。 每部分的長度應該盡可能的相等:任意兩部分的長度差距不能超過 1 。這可能會導致有些部分為 null 。 這 k 個部分應該按照在鏈表中出現(xiàn)的順序排列,并且排在前面的部分的長

    2023年04月17日
    瀏覽(18)
  • Leetcode-每日一題【206.反轉鏈表】

    Leetcode-每日一題【206.反轉鏈表】

    給你單鏈表的頭節(jié)點? head ?,請你反轉鏈表,并返回反轉后的鏈表。 示例 1: 輸入: head = [1,2,3,4,5] 輸出: [5,4,3,2,1] 示例 2: 輸入:head = [1,2] 輸出:[2,1] 示例 3: 輸入:head = [] 輸出:[] 提示: 鏈表中節(jié)點的數(shù)目范圍是 [0, 5000] -5000 = Node.val = 5000 ? 1.我們遍歷鏈表,首先設置

    2024年02月12日
    瀏覽(18)
  • Leetcode-每日一題【143.重排鏈表】

    Leetcode-每日一題【143.重排鏈表】

    給定一個單鏈表? L ? 的頭節(jié)點? head ?,單鏈表? L ?表示為: 請將其重新排列后變?yōu)椋??不能只是單純的改變節(jié)點內部的值,而是需要實際的進行節(jié)點交換。 示例 1: ? ? 輸入: head = [1,2,3,4,5] 輸出: [1,5,2,4,3] 提示: 鏈表的長度范圍為? [1, 5 * 104] 1 = node.val = 1000 1.首先我們

    2024年02月11日
    瀏覽(22)
  • Leetcode-每日一題【61.旋轉鏈表】

    Leetcode-每日一題【61.旋轉鏈表】

    給你一個鏈表的頭節(jié)點? head ?,旋轉鏈表,將鏈表每個節(jié)點向右移動? k ? 個位置。 示例 1: 輸入:head = [1,2,3,4,5], k = 2 輸出:[4,5,1,2,3] 示例 2: ? 輸入: head = [0,1,2], k = 4 輸出: [2,0,1] 提示: 鏈表中節(jié)點的數(shù)目在范圍? [0, 500] ?內 -100 = Node.val = 100 0 = k = 2 * 109 1.根據(jù)題目給出

    2024年02月11日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包