作者SecondRun (南爹摳打)
看板Marginalman
標題Re: [閒聊] 每日leetcode
時間Mon May 6 13:52:01 2024
※ 引述《oinishere (是oin捏)》之銘言:
: 思路:
: 笑死
: 直接用陣列做monotonic stack
: 很白癡可是很簡單
: 只要裡面有一個以上的東西
: 就要改變他們的串接關係
: 然後傳第一個就不用重新全串了
: class Solution {
: public:
: ListNode* removeNodes(ListNode* head)
: {
: ListNode* preh = new ListNode(0,head);
: vector<ListNode*> paper;
: ListNode* n = head;
: while(n)
: {
: while(!paper.empty() && paper[paper.size()-1]->val < n->val)
: {
: paper.pop_back();
: }
: paper.push_back(n);
: if(paper.size()>1)
: {
: paper[paper.size()-2]->next = paper[paper.size()-1];
: }
: n = n->next;
: }
: return paper[0];
: }
: };
想法:
一樣,但沒開array
C# code:
public class Solution
{
public ListNode RemoveNodes(ListNode head)
{
var stack = new Stack<ListNode>();
var current = head;
while (current != null)
{
while (stack.Count != 0 && stack.Peek().val < current.val)
{
stack.Pop();
}
if (stack.Count != 0)
{
stack.Peek().next = current;
}
else
{
head = current;
}
stack.Push(current);
current = current.next;
}
return head;
}
}
--
(づ′・ω・)づ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.220.51.52 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1714974724.A.F14.html
推 oinishere: 我把vector當stack用 結果我好像沒用過stack 05/06 13:54
→ SecondRun: 噢 我才發現你沒有stack 05/06 13:56
→ wu10200512: 我忘記c++的stack是linked list還areay 做的 05/06 13:57
→ wu10200512: 應該是linked list 我剛剛查了一下 stack跟queue被de 05/06 13:59
→ wu10200512: que取代 05/06 13:59