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

leetcode日记(79)反转链表Ⅱ

链表的题都挺简单的。

使用一趟扫描就可以实现,不过要记录的中途节点有点多,需要记录left的前一个、left所在的元素,循环中要记录三个元素,每次循环第二个元素指向第一个元素,随后三个元素向后移动。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int left, int right) {
        if(left==right) return head;
        ListNode *h = new ListNode(0,head);
        ListNode *result=h;
        for(int i=0;i<left-1;i++) h=h->next;
        ListNode *hh=h->next;
        ListNode *a=hh->next;
        ListNode *b=a->next;
        a->next=hh;
        ListNode* c=a;
        for(int i=left;i<right-1;i++){
            c=a;
            a=b;
            b=b->next;
            a->next=c;
        }
        h->next=a;
        hh->next=b;
        return result->next;
    }
};

链表题目都需要注意,在开始时最好设一个“开始的开始”在head前面,这样就会方便很多。


http://www.kler.cn/a/574079.html

相关文章:

  • PWM子系统芯片驱动源码pwm-tegra.c分析
  • 变分扩散模型 ELBO 重构推导详解
  • 软件测试基础:功能测试知识总结
  • JmeterHttp请求头管理出现Unsupported Media Type问题解决
  • ubuntu局域网部署stable-diffusion-webui记录
  • MySQL 中,SELECT ... FOR UPDATE
  • Vue父子组件传递笔记
  • 向量数据库Chroma的介绍
  • 96.在 Vue 3 中使用 OpenLayers 探究加载 Point、Polygon 的极限
  • upload-labs详解(1-12)
  • 如何下载安装 PyCharm?
  • 备考六级:词汇量积累(day4)
  • 三参数水质在线分析仪:从源头保障饮用水安全
  • aardio - 虚表 —— 两个虚表之间互相拖动交换数据
  • 走进聚类的世界:用日常例子解释复杂的算法概念
  • npm install 报错 no such file or directory 的解决方法
  • GoLang的select是什么?在什么时候场景下用
  • Unity多Pass渲染与GPU Instancing深度优化指南
  • OpenCV计算摄影学(16)调整图像光照效果函数illuminationChange()
  • 浅谈Manus智能体与其他AI助手(如ChatGPT、Claude等)的优势