(LeetCode-链表-2) 翻转链表和快慢指针

news/2024/6/18 19:06:19

反转链表

反转一个单链表。

分析:
1.在原链表上操作,定义三个指针,front,middle,end
2.front用于middle指向它的父节点
3.middle用于改变当前元素的next指针
4.end用于链表断链后可以让middle继续往后操作

ListNode* reverseList(ListNode* head) {
    if(!head)return head;
    ListNode* tmp=(ListNode*)malloc(sizeof(ListNode));
    tmp->next=head;
    ListNode* front=tmp;
    ListNode* middle=front->next;
    ListNode* end=middle->next;
    while(end!=NULL){
        middle->next=front;
        front=middle;
        middle=end;
        end=end->next;
    }
    middle->next=front;
    head->next=NULL;
    return middle;
}

回文链表

请检查一个链表是否为回文链表。

分析:
1.定义一个slow慢指针(每次一步)与一个fast快指针(每次两步)
2.当fast到链表结尾是,slow则处于链的表中点位置
3.利用栈的特性来保存每次slow经过的节点,用于之后的比较

bool isPalindrome(ListNode* head) {
       if (!head || !head->next) return true;
       ListNode* slow=head;
       ListNode* fast=head;
       vector<int> stack;
       while(fast&&fast->next){
           stack.push_back(slow->val);
           slow=slow->next;  
           fast=fast->next->next;
       }
      if(fast)slow=slow->next;
       while(slow){
          if(slow->val!=stack.back()){
              return false;
          }else{
              slow=slow->next;
              stack.pop_back();
          }
       }
       return true;
}

http://www.niftyadmin.cn/n/2608633.html

相关文章

浏览器工作原理学习(七)

在执行前就进行编译并创建执行上下文的三种情况 当JS执行全局代码得时候&#xff0c;会编译全局代码并创建全局执行上下文&#xff0c;而且在整个页面的生存周期内&#xff0c;全局执行上下文只有一份。当调用一个函数的时候&#xff0c;函数体内的代码会被编译&#xff0c;并创…

Linux 查找哪个进程占用文件或文件夹

安装fuser: yum install psmisc -y 查看哪个进程占用文件夹&#xff1a; fuser -mv /nfs

浏览器工作原理学习(八)

作用域 全局作用域中的对象在代码中的任何地方都能访问&#xff0c;其生命周期伴随着页面的生命周期。函数作用域就是在函数内部定义的变量或者函数&#xff0c;并且定义的变量或函数只能在函数内部访问&#xff0c;函数执行结束后&#xff0c;函数内部定义的变量会被销毁。块级…

浏览器工作原理学习(九)

作用域链 什么是作用域链&#xff1f; 每个执行上下文的变量环境中&#xff0c;都包含了一个外部引用&#xff0c;用来指向外部的执行上下文&#xff0c;我们把外部引用称为outer。JS引在执行全局上下文中查找&#xff0c;这个查找的链条就是被称为作用域链。 什么是词法作用…

网页DIV+CSS布局和动画美化全程实例 (陈益材) 随书光盘

网站的建站技术近几年得到迅速的发展&#xff0c;网页的布局与特效动画技术层出不穷&#xff0c;网站建设已经从简单的技术支持时代衍变到现在的视觉美化时代。但如何使设计的网页高人一筹&#xff0c;达到让人过目不忘的境界&#xff0c;如何追求以最简单的特效让网页“亮”起…

浏览器工作原理学习(十)

this 在对象内部的方法中使用对象内部的属性是一个非常普遍的需求。但JS的作用域机制并不支持这一点&#xff0c;为此&#xff0c;JS高出了this机制。this 和作用域链是2套不同的系统。 什么是this&#xff1f; this是和执行上下文绑定的&#xff0c; 每个执行上下文中都有一…

linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

rcp rcp不是一种安全的的传输文件的方式&#xff0c;rcp通过rsh&#xff08;rsh见下面&#xff09;来执行远程命令&#xff0c;要使用rcp必须经过一些配置&#xff0c;现在rcp已经被scp取代了&#xff0c;常用scp来进行文件传输。要使用rcp&#xff0c;需要具备以下条件&#x…

浏览器工作原理学习(十一)

语言类型 在使用前需要确认其变量数据类型的称为静态语言©&#xff0c;运行过程中需要检查数据类型的语言称为动态语言(js)。在赋值时&#xff0c;语言回进程隐式类型转换&#xff0c;这类语言被称为弱类型语言&#xff0c;不支持隐式类型转换额语言称为强类型语言。 JS数…