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