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

LeetCode 92 Reverse Linked List II(翻转链表II)(Linked List)(*)

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/52187625

翻译

将一个链表中位置m和n的节点进行翻转。就地且一次通过。

例如
给定 1->2->3->4->5->NULL, m = 2 和n = 4,

返回 1->4->3->2->5->NULL.

备注:
给定的m和n满足以下条件:
1 <= m <= n <= 链表的长度

原文

Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given 1->2->3->4->5->NULL, m = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

分析

C Plus Plus

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int m, int n) {
        ListNode *newHead = new ListNode(0);
        newHead->next = head;

        ListNode *c = newHead;
        for (int i = 0; i < m - 1; i++) {
            c = c->next;
        }
        ListNode *p = c->next;
        for (int i = 0; i < n - m; i++) {
            ListNode *t = p->next;
            p->next = t->next;
            t->next = c->next;
            c->next = t;
        }
        return newHead->next;
    }
};

Java

updated at 2016/09/23
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    ListNode reverseBetween(ListNode head, int m, int n) {
        ListNode newHead = new ListNode(0);
        newHead.next = head;
        ListNode c = newHead;

        for (int i = 0; i < m - 1; i++) {
            c = c.next;
        }

        ListNode p = c.next;
        for (int i = 0; i < n - m; i++) {
            ListNode tmp = p.next;
            p.next = tmp.next;
            tmp.next = c.next;
            c.next = tmp;
        }
        return newHead.next;
    }
}

相关文章:

  • 代理设计模式
  • 3.《Spring学习笔记-MVC》系列文章,讲解返回json数据的文章共有3篇,分别为:...
  • Linux 第九天: (08月11日) 练习和作业
  • 原生js库,持续更新中……
  • MongoDB工具简要说明
  • apk签名
  • Java中创建对象的5种方式
  • OC多态
  • C标准I/O库函数与Unbuffered I/O函数
  • error: insufficient permissions for device: verify udev rules
  • python爬虫中文网页cmd打印出错问题解决
  • Lambda 表达式(C# 编程指南) 微软microsoft官方说明
  • (一)WLAN定义和基本架构转
  • 一道闭包题引发的思考
  • 循环 函数 软件包 【中】
  • 分享的文章《人生如棋》
  • Angular 4.x 动态创建组件
  • bearychat的java client
  • Bytom交易说明(账户管理模式)
  • Centos6.8 使用rpm安装mysql5.7
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • CSS 三角实现
  • Laravel5.4 Queues队列学习
  • Sass Day-01
  • Swoft 源码剖析 - 代码自动更新机制
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从重复到重用
  • 读懂package.json -- 依赖管理
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 规范化安全开发 KOA 手脚架
  • 前嗅ForeSpider教程:创建模板
  • 网络应用优化——时延与带宽
  • 详解NodeJs流之一
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #includecmath
  • #每天一道面试题# 什么是MySQL的回表查询
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (2.2w字)前端单元测试之Jest详解篇
  • (2015)JS ES6 必知的十个 特性
  • (LeetCode C++)盛最多水的容器
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (蓝桥杯每日一题)love
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转)ORM
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • /var/log/cvslog 太大
  • @private @protected @public
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)