Re: [閒聊] 每日leetcode

作者: SecondRun (雨夜琴聲)   2024-05-06 13:52:01
※ 引述《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;
}
}
作者: oinishere (是oin捏)   2024-05-06 13:54:00
我把vector當stack用 結果我好像沒用過stack
作者: SecondRun (雨夜琴聲)   2024-05-06 13:56:00
噢 我才發現你沒有stack
作者: wu10200512 (廷廷)   2024-05-06 13:57:00
我忘記c++的stack是linked list還areay 做的應該是linked list 我剛剛查了一下 stack跟queue被deque取代

Links booklink

Contact Us: admin [ a t ] ucptt.com