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

天津网站建设服务wordpress改关键词

天津网站建设服务,wordpress改关键词,做动画相册在哪个网站好,升级访问页面跳转链表算法 前言一.原地逆置思路一:头插法思路二:双指针法思路3:递归 例题:1.头插法2.双指针法3,递归 二.双指针快慢指针:一个指针快一个指针慢例题1例题2 前言 我会将一些常用的算法以及对应的题单给写完&am…

链表算法

  • 前言
  • 一.原地逆置
    • 思路一:头插法
    • 思路二:双指针法
    • 思路3:递归
  • 例题:
    • 1.头插法
    • 2.双指针法
    • 3,递归
  • 二.双指针
    • 快慢指针:一个指针快一个指针慢
      • 例题1
      • 例题2

前言

我会将一些常用的算法以及对应的题单给写完,形成一套完整的算法体系,以及大量的各个难度的题目,目前算法也写了几篇,题单正在更新,其他的也会陆陆续续的更新,希望大家点赞收藏我会尽快更新的!!!

一.原地逆置

思路一:头插法

若带头节点,先将头节点摘下来
然后从第一个节点开始,挨个插入每一个节点
摘下来后用头插法建立新的链表

思路二:双指针法

定义两个指针pre和cur,pre在前cur在后
每次让pre的next指向cur,实现一次局部反转
局部反转之后。pre和cur同时往后移动一个位置,循环上述过程,直至pre到达链表尾部(在循环过程中需要记录pre->next)

思路3:递归

递归出口:传进来的节点p的next = NULL
递归体:递归调用,把p之后的先反转

例题:

力扣206. 反转链表
在这里插入图片描述

1.头插法

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*///头插法
struct ListNode* reverseList(struct ListNode* head) {struct ListNode* p = head;if(head == NULL){//先判断是否为空return NULL;}struct ListNode* q = p->next;head = NULL;//将节点从链表拿下来while(q != NULL){p->next = head;head = p;p = q;q = q->next;}p->next = head;return p;
}

2.双指针法

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*///双指针法
struct ListNode* reverseList(struct ListNode* head) {struct ListNode* p = head;//指向头节点struct ListNode* q = NULL;//指向头节点的上一个节点while(p != NULL){//struct ListNode* t = p->next;//保存p->nextp->next = q;q = p;p = t;}return q;
}

3,递归

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*///递归
struct ListNode* reverse (struct ListNode* cur, struct ListNode* pre);struct ListNode* reverseList(struct ListNode* head) {struct ListNode* cur = head;struct ListNode* pre = NULL;return reverse (cur, pre);
}struct ListNode* reverse (struct ListNode* cur, struct ListNode* pre){if (cur == NULL) {return pre;}else {struct ListNode* tmp = cur -> next;cur -> next = pre;return reverse (tmp, cur);}
}

二.双指针

快慢指针:一个指针快一个指针慢

例题1

力扣LCR 140. 训练计划 II

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* trainingPlan(struct ListNode* head, int cnt) {struct ListNode* cur = head;struct ListNode* next = head;for(int i = 0; i < cnt; i++){next = next->next;}while(next){cur = cur->next;next = next->next;}return cur;
}

例题2

力扣142. 环形链表 II
在这里插入图片描述
找环开始节点慢指针每次走一个节点,快指针每次走两个节点,当相遇时,再来一个指针从头一个一个走。当与慢指针相遇的时候为开始节点

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode *detectCycle(struct ListNode *head) {if(head == NULL || head->next == NULL || head->next->next == NULL){return NULL;}struct ListNode* s = head;struct ListNode* f = head;while(f != NULL){s = s->next;if(f->next == NULL){return NULL;}f = f->next->next;if(f == s){struct ListNode* t = head;while(t != s){t = t->next;s = s->next;}return t;}}return NULL;}

未完待续……

http://www.dtcms.com/a/591110.html

相关文章:

  • 赣州商友网络科技有限公司如何做网站推广优化
  • 上海建设集团网站青岛百度推广优化怎么做的
  • 深圳优秀网站建设公司seo优化是什么职位
  • 高端网站建设企业深圳市顺建建设工程有限公司网站
  • 网站被攻击的方法怎么让别人看到自己做的网站
  • 阿里云如何做网站文档怎么做网站链接
  • 正则表达式详解与实战指南:从入门到常见案例
  • 手机可以做3d动漫视频网站遵义网站建设方案
  • ps做网站画布多大深圳 网站建设培训学校
  • 昆山住房与城乡建设局网站网页设计师培训学院
  • 厦门企业网站制作软件外包官网
  • 网站建设服务器的配置wordpress 招商系统
  • 我要建企业营销型网站成都网站建设科技公
  • 睢宁县凌城做网站的外贸人常用网站
  • 淄博网站制作价格低灵犀科技 高端网站建设
  • 外国大气网站建视频网站需要多大空间
  • 做地税电子签章的网站有哪些好的做兼职网站有哪些
  • 网页设计动画网站php做视频网站有哪些软件下载
  • 网站建设的学习网站开发外包业务怎么接
  • 南昌网站建设资讯龙岩seo招聘
  • 穷游 网站开发网站基本功能
  • 买股票的最佳时机解题思路
  • 企业网站推广定义重庆市建设工程信息网官网专家评审
  • 鸣蝉自助建站平台中山好的网站建设公司
  • 长安网站建设多少钱免费模版网
  • 网站动态页面免费自己制作app手机软件
  • 网站建设可以在里面装东西营销型企业网站的建设方案
  • 泊头市做网站网站建设合同 附件
  • 违法网站怎么做安全深圳室内设计公司50强
  • 网站建设吗中小企业网站制作方法