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

浙江建设职业技术学院oa网站个人可以做推广的平台有哪些

浙江建设职业技术学院oa网站,个人可以做推广的平台有哪些,人力资源和社会保障部社会保障能力建设中心,建设网站的目的及功能定位主要包括哪些内容24. 两两交换链表中的节点 24. 两两交换链表中的节点两两节点分组,反转两个节点连接递归求解 24. 两两交换链表中的节点 题目链接:24. 两两交换链表中的节点 题目内容: 题目中强调不能修改节点内部值,是因为如果不加这个限制的话…

24. 两两交换链表中的节点

  • 24. 两两交换链表中的节点
    • 两两节点分组,反转两个节点连接
    • 递归求解

24. 两两交换链表中的节点

题目链接:24. 两两交换链表中的节点
题目内容:
在这里插入图片描述
题目中强调不能修改节点内部值,是因为如果不加这个限制的话,直接将两个节点的值交换就好了,不涉及到节点间连接的重新建立,很容易实现。但是加了这个限制以后,就只能改变节点间的连接了。

两两节点分组,反转两个节点连接

其实这就是一道涉及到链表基本操作的题目,题目的要求是将链表中的节点,按照两个两个的分组,【包括组内、和前一组、和后一组,改变节点连接的操作】:

  • 1、组内的两个节点原来是前一个节点currNode指向后一个节点tmp 【tmp = currNode->next 】,现在变成tmp->next = currNode;
  • 2、组内的前一个节点currNode,现在指向下一组节点的【两个节点】的前面一个,即currNode->next = tmp->next;【注意这里的tmp->next是第1步还未进行前,原始的currNode的下下一个节点;
  • 3、前一组节点【两个节点】的后面一个节点preNode原来是指向currNode的,现在应该指向tmp;

之后currNode向后移动,遍历所有这样的分组。整个过程如下所示:
在这里插入图片描述

实现细节:

  • 对于第一组节点,交换两个节点后,头节点会改变【以preNode是不是null来判断】;
  • 因为是两两分组,从当前分组变到下一个分组,按道理应该是currNode = currNode->next->next,但是由于上述第2步中,currNode->next = tmp->next;所以currNode = currNode->next就达到了向前移动两个节点的目的;
  • 如果总共有偶数个节点,那么两两分组交换,刚好;如果是奇数个节点,最后一个节点不变。

代码实现如下(C++):

class Solution {
public:ListNode* swapPairs(ListNode* head) {//如果链表为空 或只有一个节点 不需要交换if(head == nullptr || head->next == nullptr)return head;//preNode是前一组节点里面的后面一个//currNode是当前一组节点中前面一个ListNode *preNode = NULL, *currNode = head;//遍历完的条件while(currNode && currNode->next){ListNode *tmp = currNode->next; //先保存这个指针currNode->next =tmp->next; //改变和下一组节点的连接tmp->next = currNode; //改变组内节点的连接if(preNode){  preNode->next = tmp; //改变前一组节点和当前组节点的连接}       else{ //如果preNode是nullptr说明是第一组,头节点会改变head = tmp;}    //向后移动,到下一个分组preNode = currNode;currNode = currNode->next; }return head;}
};

递归求解

由于链表的定义是递归的,这道题依旧可以用递归的办法来解决。先搞清楚以下三个问题:

  • 递归的终止条件是什么?
  • 当前节点要做什么操作?
  • 向前返回的是什么?

递归依然是到递归终止条件,才开始向前返回结果。所以是链表后半部分的分组先完成了组内节点连接的改变,再向前返回,返回的是后半部分链表完成了两两交换节点后的头节点递归终止条件是head==null || head->next == null。在当前节点需要做什么呢?

  • 交换组内节点,即head->next这个节点要指向head【head->next->next = head】;
  • 和后面部分链表返回的头节点连接,head->next =递归函数返回的头结点;
  • 向上返回从当前节点开始的这段链表,完成两两节点交换后的头节点。

代码实现如下(C++):

class Solution {
public:ListNode* swapPairs(ListNode* head) {//递归终止条件if(head == nullptr || head->next == nullptr)return head;//要返回的新头节点ListNode *newhead = head->next; //与后半段链表完成了两两节点交换后返回的头节点建立新连接head->next= swapPairs(head->next->next);//组内节点改变连接newhead->next = head;//返回新头节点return newhead;        }
};
http://www.tj-hxxt.cn/news/49751.html

相关文章:

  • 做网站后面维护要收钱吗b站入口2024已更新
  • 无极网站站怎么有的下不了要看网的域名是多少
  • 重庆企业官网建站快速搭建东莞关键词排名优化
  • ppt模板免费下载百度云优化网站排名技巧
  • 门诊部网站建设苏州百度推广
  • 网站打开速度多少时间安徽网站推广
  • 其中网站的功能需要汕头百度seo公司
  • 做网站大图片网络营销方式都有哪些
  • 西安网站制作顶尖公正在直播足球比赛
  • 学做ps的软件的网站推广app的单子都在哪里接的
  • 站外做deal的网站黄山seo公司
  • 企业 网站设计seo排名快速优化
  • 成都网站制作公司报价品牌推广专员
  • 建立网站费用较低搜索app下载
  • 重庆大渝网优化培训学校
  • 做企业网站一般多少钱疫情优化调整
  • 哪家公司做门户网站竞价推广代运营公司
  • 做宣传的视频网站有哪些怎么用网络推广业务
  • 宣传网站怎么做深圳网络推广团队
  • 宜昌网站制作关键词seo排名怎么选
  • 做网站要不要用jsp网站建设哪家好公司
  • 做h5好点的网站昆山网站建设
  • 用现成的网站模板只套内容就可以有这样的吗百度推广后台登陆入口
  • 使用动易模版制作网站今日国内重大新闻
  • 贵州建设厅网站报名系统香蕉和忘忧草对焦虑的影响
  • 长宁建设机械网站今天实时热搜榜排名
  • wordpress找不到页面内容编辑郑州seo优化外包顾问阿亮
  • 企业招聘网站模板站长工具seo综合查询怎么用
  • 徐城乡建设局网站百度官方客服平台
  • 独立商城系统网站建设新闻发布的网站