文章目录

  • 删除链表中重复的节点
  • 最小栈

删除链表中重复的节点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例
如,链表1->2->3->3->4->4->5 处理后为 1->2->5



/*
struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}
};
*/
class Solution {public:ListNode* deleteDuplication(ListNode* pHead) {if(pHead == nullptr){return nullptr;}ListNode* vhead = new ListNode(0);//新建哨兵位头节点vhead->next = pHead;//哨兵位链接原链表ListNode* prev = vhead;ListNode* cur = pHead;//prev 在cur的前面while(cur){//如果当前cur指向的值==cur->next指向的值if(cur->next !=nullptr &&cur->val ==cur->next->val){//cur走到重复值的最后一个位置while(cur->next&&cur->val ==cur->next->val){cur = cur->next;}//跳出循环时,cur指向的就是重复值的最后一个位置prev->next = cur->next;//prev链接cur的下一个节点cur = cur->next;//cur往后走}else{//prev和cur一起往后走//prev到cur的位置,此时cur位置的值一定是不重复的//prev始终指向的是不重复的位置prev = cur;cur = cur->next;}}return vhead->next;}
};

最小栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)).
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法.

题目已经说明:pop、top 和 min 函数操作时,栈中一定有元素

方法1:

我们使用一个辅助栈,内部保存元素的个数和数据栈完全一样,不过,辅助栈内部永远保存本次入栈的数为
所有数据的最小值(注意**:辅助栈内部元素可能会出现“必要性”重复**)

入栈:

  • 最小栈为空 || 最小栈的栈顶元素大于当前入栈元素 -> 压入当前元素到最小栈
  • 否则重复压入最小栈的栈顶元素

出栈:

  • 直接Pop掉最小栈的栈顶元素
class Solution {public:void push(int value) {stPush.push(value);//如果最小栈为空 || 最小栈的栈顶元素大于当前入栈元素if(stMin.empty() || stMin.top()>=value){stMin.push(value);}else{//重复压入最小栈的栈顶元素stMin.push(stMin.top());    }}void pop() {stMin.pop();stPush.pop();}int top() {return stPush.top();}int min() {return stMin.top();}
private:stack<int> stPush;stack<int> stMin;//最小栈,辅助栈
};

方法2:方法1的优化版本

入栈:最小栈为空 || 最小栈的栈顶元素大于当前入栈元素 :才放到最小栈中

出栈:当前出栈数据和最小栈的栈顶元素相同才Pop掉,否则不处理最最小栈的栈顶元素

class Solution {public:void push(int value) {stPush.push(value);//如果最小栈为空 || 最小栈的栈顶元素大于当前入栈元素if(stMin.empty() || stMin.top()>=value){stMin.push(value);}}void pop() {if(stMin.top() == stPush.top()){stMin.pop();}stPush.pop();}int top() {return stPush.top();}int min() {return stMin.top();}
private:stack<int> stPush;stack<int> stMin;//最小栈,辅助栈
};

【算法】剑指offer-删除链表中重复的节点最小栈相关推荐

  1. python实现剑指offer删除链表中重复的节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  2. 剑指offer.删除链表中重复的节点

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留. 样例1 输入:1->2->3->3->4->4->5输出:1->2-> ...

  3. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  4. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  5. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点

    [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...

  6. 面试题18: 删除链表节点:删除链表中重复的节点

    /******************************************************************* *<剑指Offer--名企面试官精讲典型编程题>C ...

  7. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  8. python删除链表中重复的节点_剑指offer:删除链表中重复的节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  9. 《剑指offer》删除链表中重复的节点

    题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后为 ...

最新文章

  1. linux终端 多标签,Linux有问必答:如何在 Ubuntu 15.04 的 GNOME 终端中开启多个标签...
  2. Adapter适配器设计模式
  3. Redis 基本操作
  4. python入门if语句练习_python入门视频:09 if语句_练习.mp4
  5. JavaScript高级之构造函数和原型
  6. 大横琴科技联合阿里云发布全国首个跨境服务创新平台琴澳通
  7. 5招训练你的数据敏感度,数据高手都在用
  8. linux mysql 不区分大小写,Linux下设置MySQL不区分大小写_MySQL
  9. rocketmq 几种队列_进阶必看的 RocketMQ ,就这篇了
  10. C# 数组拷贝 byte数组拷贝,char数组拷贝
  11. 圣诞老人python代码_用Python画圣诞老人的N种方法
  12. 自定义DatetimePicker起始默认值
  13. 2022金属非金属矿山(露天矿山)安全管理人员考试练习题模拟考试平台操作
  14. jvm原理与性能调优
  15. contentprovider与resolver使用
  16. web课程设计网页规划与设计----公司官网带轮播图 (页面精美 1页)
  17. 计算机组成原理经典复习题集锦(附答案)
  18. matlab动态神经网络进行时间序列预测分析
  19. 用计算机打出刚好遇见你,【计算机·故事】刚好遇见你 余生都是你
  20. ATX安装及简单使用

热门文章

  1. 2017年度最值得读的AI论文 | CV篇 · 评选结果公布
  2. 【059期】面试官问:序列化是什么,为什么要序列化,如何实现?
  3. 使用section.key的形式读取ini配置项
  4. 微信/QQ域名防封防拦截360不报毒任意链接跳转源码
  5. 饿了么红包、美团优惠券开发
  6. 武侠中的基本要素(武侠之奥义)
  7. hcip第一天复习笔记
  8. 如何在您的香港主机帐户上注册多个域名
  9. 51nod1462 树据结构
  10. Word中遇到的各种问题及解决方案