【Leetcode -61.旋转链表 -82.删除排序链表中的重复元素Ⅱ】
Leetcode
- Leetcode -61.旋转链表
- Leetcode -82.删除排序链表中的重复元素Ⅱ
Leetcode -61.旋转链表
题目:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 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]
我们的思路是,每旋转一次,就把尾节点变成头节点,原来尾节点的上一个更新为新的尾节点;
struct ListNode* rotateRight(struct ListNode* head, int k){if (head == NULL){return NULL;}struct ListNode* curr = head;//使curr走到链表的尾节点,并计算链表长度int len = 1;while (curr->next){curr = curr->next;len++;}//k取len的余数,防止重复旋转k %= len;//循环迭代while (k--){//prev每次从头节点开始找尾节点的前一个节点struct ListNode* prev = head;while (prev->next != curr){prev = prev->next;}//找到后把当前curr尾节点的next接到头节点//prev更新为新的尾节点,再赋给curr//更新新的头节点curr->next = head;prev->next = NULL;head = curr;curr = prev;}return head;}
Leetcode -82.删除排序链表中的重复元素Ⅱ
给定一个已排序的链表的头 head ,删除原始链表中所有重复数字的节点,只留下不同的数字 。
返回已排序的链表 。
示例 1:
输入:head = [1, 2, 3, 3, 4, 4, 5]
输出:[1, 2, 5]
示例 2:
输入:head = [1, 1, 1, 2, 3]
输出:[2, 3]
我们的思路是,给定一个哨兵位,每次判断这个哨兵位的后两个节点的val是否相等,若相等则记录下它的val为flag,让cur一直往后走,直到cur的val不等于flag;若不相等cur往后迭代;
struct ListNode* deleteDuplicates(struct ListNode* head){//哨兵位struct ListNode* dummyHead = malloc(sizeof(struct ListNode));dummyHead->next = head;//cur从哨兵位开始struct ListNode* cur = dummyHead;//比较cur后面的两个是否相等,//若相等则记录下它的val为flag,让cur一直往后走,直到cur的val不等于flag//若不相等,cur往后迭代while (cur->next && cur->next->next){if (cur->next->val == cur->next->next->val){int flag = cur->next->val;while (cur->next && cur->next->val == flag){cur->next = cur->next->next;}}else{cur = cur->next;}}//head更新为哨兵位的next,因为原来的头也可能会被删head = dummyHead->next;free(dummyHead);dummyHead = NULL;return head;}
【Leetcode -61.旋转链表 -82.删除排序链表中的重复元素Ⅱ】相关推荐
- LeetCode 25K 个一组翻转链表26删除排序数组中的重复项
如果问题或者其他方法还请分享,如加入打卡微信搜索bigsai回复进群一起打卡. K个一组翻转链表 题目要求 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小 ...
- LeetCode 79单词搜索80删除排序数组中的重复项Ⅱ81.搜索旋转排序数组Ⅱ
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...
- leetcode 26. 删除排序数组中的重复元素
题目 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下 ...
- Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历
Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...
- leetcode初级算法1.删除排序数组中的重复项
leecode初级算法1.删除排序数组中的重复项 仅为个人刷题记录,不提供解题思路 题解与收获 class Solution {public int removeDuplicates(int[] nu ...
- [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项
这道题我真的纠结好久,因为没注意那个原地的题目要求,所以很奇怪怎么我电脑运行成功,但是LeetCode上运行就是不对.气哭. 感谢群友lino的帮助.他试了set方法不行,直接喂给我的答案了... 题 ...
- c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...
- C++描述 LeetCode 26. 删除排序数组中的重复项
C++描述 LeetCode 26. 删除排序数组中的重复项 大家好,我叫亓官劼(qí guān jié ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在CSDN中写博客 ...
- LeetCode题组:第26题-删除排序数组中的重复项
1.题目:删除排序数组中的重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.(注意这里提到了排序数组,也就是说数组是有序的.如果无序,我们又 ...
最新文章
- 一家两位Fellow大满贯!北大谢涛当选ACM Fellow,与胞兄谢源完成会师
- 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager
- C---蝉、蜻蜓、蜘蛛
- 大圣魔方——美团点评酒旅BI报表工具平台开发实践
- presto .vs impala .vs HAWQ query engine
- 笨办法学 Python · 续 练习 17:字典
- maven详解scope
- oracle的文件管理ofm,oracle 文件管理功能
- (一)LINGO入门---软件安装
- 论基于架构的软件设计方法及应用
- 读书笔记(13)STP
- 深度学习中处理类别不平衡问题主流方法总结
- 点击父组件按钮 显示子组件_按钮设计用户界面组件系列
- java后端工程师面试题(笔试):2022-11-04 经历(一)
- 软件的生命周期及模型
- 欧洲核子研究中心公布强子对撞机事故初步分析
- php-pfm并发,php-pfm配置详解
- UglifyJS和Uglifycss使用
- 洛谷p1618 三连击(升级版)(python)
- startssl免费证书申请
热门文章
- Google Analytics cookie内容详解 Read more: http://bluewhale.cc/2010-01-24/google-analytics-cookie.html#
- Elasticsearch:分析器中的 character filter 介绍
- 弘辽科技:淘宝开店有哪些引流渠道?
- 回首2022,展望2023(年度总结)
- 安然如一曲悠扬而又静谧的音乐
- 想用声音变现,但是声音不好听怎么办
- 程序员的第一款表情包,你值得拥有
- Linux 通过代码 获取某个目录的磁盘空间占用情况
- Unity接入ChartAndGraph图表插件
- 微信小程序开发问题汇总 1