当前位置: 首页 > news >正文

域名备案网站建设方案单页网站制作

域名备案网站建设方案,单页网站制作,免费logo设计网址,北京网站建设方案开发公司Leetcode Leetcode -86.分隔链表Leetcode -92.反转链表Ⅱ Leetcode -86.分隔链表 题目:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每…

Leetcode

  • Leetcode -86.分隔链表
  • Leetcode -92.反转链表Ⅱ

Leetcode -86.分隔链表

题目:给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。
你应当 保留 两个分区中每个节点的初始相对位置。

示例 1:
输入:head = [1, 4, 3, 2, 5, 2], x = 3
输出:[1, 2, 2, 4, 3, 5]

示例 2:
输入:head = [2, 1], x = 2
输出:[1, 2]

我们的思路是,遍历链表的每个元素,如果比x小则拿下来放到一个small的结构体指针中;否则,放到一个large的指针中;最后,判断small是否为空,如果为空,则说明链表中的元素全都是比x大或等于x;否则,链表中的元素有比x大或等于,也有比x小的,这时候将small的尾部接到large上即可;

		struct ListNode* partition(struct ListNode* head, int x){//small放比x小的值//large放大于等于x的值//smalltail和largetail分别是它们的尾struct ListNode* large = NULL, * small = NULL;struct ListNode* largetail = NULL, * smalltail = NULL;//从头开始遍历,到空结束while (head){//head的val比x小,放到smallif (head->val < x){//当small为空,即没有值的时候,small和smalltail都更新为当前的head//head迭代往后走,尾的next置空if (small == NULL){small = smalltail = head;head = head->next;smalltail->next = NULL;}//否则,更新尾并迭代head即可else{smalltail->next = head;head = head->next;smalltail = smalltail->next;smalltail->next = NULL;}}//当head的val比x大或等于x,与上面类似else{if (large == NULL){large = largetail = head;head = head->next;largetail->next = NULL;}else{largetail->next = head;head = head->next;largetail = largetail->next;largetail->next = NULL;}}}//如果链表中的值有大有小,即small这个链表不为空,就将small尾部的next接到large,然后再返回smallif (small)smalltail->next = large;//这种情况则是链表中的值全都大于或等于x,直接返回large即可elsereturn large;return small;}

Leetcode -92.反转链表Ⅱ

题目:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。
请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

示例 1:
输入:head = [1, 2, 3, 4, 5], left = 2, right = 4
输出:[1, 4, 3, 2, 5]

示例 2:
输入:head = [5], left = 1, right = 1
输出:[5]

我们的思路是,使用leftcur和rightcur指针走到链表中left位置和right位置,反转left位置到right位置即可;当left为1,即在头节点的位置时,最终只需要返回反转后的链表;当left不在头节点的位置,我们用一个指针cur记录leftcur的前一个位置,我们只需要将cur->next 接到反转后的链表,并返回头节点即可;

当left = 1,right = 3:

在这里插入图片描述

在这里插入图片描述

反转后整理的链表,返回prev即可,即返回反转后的链表;

在这里插入图片描述

当left不为1,left = 2,right = 3:

在这里插入图片描述
在函数中反转后的链表如下两个图,所以需要将原链表中cur->next接到反转后的链表中,再返回head;
在这里插入图片描述

在这里插入图片描述

代码以及注释:

		struct ListNode* Reverse(struct ListNode* prev, struct ListNode* dest){struct ListNode* curr = prev->next;prev->next = dest->next;while (prev != dest){struct ListNode* next = curr->next;curr->next = prev;prev = curr;curr = next;}return prev;}struct ListNode* reverseBetween(struct ListNode* head, int left, int right){//当左下标和右下标相同,不需要反转,返回headif (left == right)return head;struct ListNode* cur = head;struct ListNode* leftcur = head, * rightcur = head;//leftcur走到链表中left的位置while (--left){leftcur = leftcur->next;}//rightcur走到链表中right的位置while (--right){rightcur = rightcur->next;}//cur从头遍历,当cur等于leftcur或者cur->next等于leftcur时停下while (cur != leftcur && cur->next != leftcur){cur = cur->next;}//cur->next等于leftcur,反转leftcur到rightcur长度的链表//并且将cur的next接到反转后的链表去//返回头节点if (cur != leftcur){cur->next = Reverse(leftcur, rightcur);return head;}//cur等于leftcur,即cur = leftcur = head,//就反转leftcur到rightcur长度的链表,返回反转后的链表即可else{return Reverse(leftcur, rightcur);}}
http://www.khdw.cn/news/9669.html

相关文章:

  • 个人注册公司流程和费用标准如何优化网站快速排名
  • 政府网站建设的战略发外链软件
  • 做淘宝客网站域名是别人的浙江网站建设制作
  • 成都网络推广网站网络开发
  • 洛浦县网站建设效果最好的推广软件
  • 全球首个完全响应式网站自助建设平台在中国诞生整合营销传播工具有哪些
  • wordpress响应式模板google搜索引擎优化
  • 定西市建设网站费用全渠道营销的概念
  • 做宣传 为什么要做网站那快速排名优化seo
  • 网站建设 经典书籍济南优化seo公司
  • 本地推广找哪些网站世界十大网站排名出炉
  • 商丘网站建设广告网站视频
  • 梁山网站开发seo专业培训需要多久
  • 企业网站属于广告吗收录提交入口网址
  • seo是东莞企业网站排seo产品推广文案范例
  • 吉林市网站建设公司上海优化网站seo公司
  • 四川省的建设厅注册中心网站论坛推广方案
  • 网站建设平台哪个好搜索热词排名
  • 动态网站设计的要求学做网站需要学什么
  • 苏州高端网站建设开发搜索引擎营销的实现方法有哪些
  • 宜春住房和城乡建设部网站域名收录查询工具
  • 做网站需要啥百度电话销售
  • 西安网站制作工程师百度一下移动版首页
  • 中国住房城乡建设部网站在线查询网站收录
  • 做外贸网站一定要会英语吗友情链接检测的特点
  • 沈阳网站建设建设公司排名福州seo推广优化
  • 阿里云网站备案要多久谷歌sem和seo区别
  • 天天广告联盟官网智能优化大师下载
  • wordpress 七牛视频南宁seo外包靠谱吗
  • 网络营销的基本内容有哪些长春seo公司哪家好