eg:

输入:head = [1,2,3,4,5], left = 2, right = 4
输出:[1,4,3,2,5]
相关解法:
图解:

/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @param {number} left
* @param {number} right
* @return {ListNode}
*/
var reverseBetween = function(head, left, right) {
let prev = null
let cur = head
let next = head
for(let i=1;i<left;i++){ //从1 开始
prev = cur
cur = cur.next
} // 保留prev和cur
let prev2 = prev
let cur2 = cur
//反转链表
for(let i=left;i<=right;i++){
next = cur.next
cur.next = prev
prev = cur
cur = next
}
//判断是否left为第一个开始
if(prev2 !== null){ //不是第一个
prev2.next = prev
}else{ //是第一个 prev为反转后的第一个结点
head = prev
}
cur2.next = cur //反转后的最后一个结点指向cur return head
};

反转链表一:easy解法:

function ReverseList(pHead)
{
// write code here
let prev = null
let cur = pHead
let next = pHead
while(cur){
next = cur.next
cur.next = prev
prev = cur
cur = next
}
return prev //此时cur指向null next也为null
}

反转链表middle的更多相关文章

  1. 剑指Offer面试题:15.反转链表

    一.题目:反转链表 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点. 链表结点定义如下,这里使用的是C#描述: public class Node { public in ...

  2. 剑指offer六:反转链表

    输入一个链表,反转链表后,输出链表的所有元素 public class ListNode { int val; ListNode next = null; ListNode(int val) { th ...

  3. 剑指Offer 反转链表

    题目描述 输入一个链表,反转链表后,输出链表的所有元素.     思路: 法1:用栈,压栈出栈 法2:头插法(有递归非递归2中)   AC代码: /* struct ListNode { int va ...

  4. PAT乙级 1025. 反转链表 (25)

    1025. 反转链表 (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一个常数K以及一个单链表L,请 ...

  5. 剑指Offer:面试题16——反转链表(java实现)

    问题描述 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点.链表结点如下: public class ListNode { int val; ListNode next = n ...

  6. (剑指Offer)面试题16:反转链表

    题目: 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点. 链表的定义如下: struct ListNode{ int val; ListNode* next; }; 思路: 反 ...

  7. 【剑指offer】递归循环两种方式反转链表

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25737023 本文分别用非递归和递归两种方式实现了链表的反转,在九度OJ上AC. 题目描写 ...

  8. 【剑指offer 面试题16】反转链表

    思路: 用三个指针preNode.curNode.nextNode完成. #include <iostream> using namespace std; struct ListNode ...

  9. 剑指OFFER之反转链表(九度OJ1518)

    题目描述: 输入一个链表,反转链表后,输出链表的所有元素.(hint : 请务必使用链表) 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<= ...

随机推荐

  1. .net core 响应的json数据驼峰显示问题。

    在.net core webapi中,默认响应的json数据是以驼峰显示的,即首字母小写的方式.如果让其正常显示,只需要在全局配置即可.代码如下图: 配置之后,响应数据就不会再以驼峰的形式展示了.而是 ...

  2. pthread_cleanup_push与pthread_cleanup_pop的理解

    一.为什么会有pthread_cleanup_push与pthread_cleanup_pop: 一般来说,Posix的线程终止有两种情况:正常终止和非正常终止.线程主动调用pthread_exit( ...

  3. MySQL记录之间是单向链表还是双向链表?

    前言 本文的观点是基于MySQL使用Innodb存储引擎的情况下进行的! 很多渠道说:MySQL数据按照主键大小依次排列,记录之间是双向链表连起来.如果说我告诉你这种说法很大程度上是错的,你肯定说我在 ...

  4. Nmap 常用命令及抓包分析

    1.主机发现:主机发现也称为ping扫描,但是Nmap中主机发现的技术已经不是简单的采用ping工具发送简单的ICMP回声请求报文.用户完全可以通过使用列表扫描(-sL)或者通过关闭ping(-P0) ...

  5. 题解 God Knows

    传送门 这里有个线段树维护单调栈的神仙技巧 同机房dalao @Yubai的不同理解方式 yysy,我考场上连\(n^2\)的暴力都没搞出来 这里实际上求的是最小权极大上升子序列 但这个跟题目几乎没什 ...

  6. redis支持的数据类型有哪些?

    string,list,hash,set,zset 底层实现数据结构 数据结构 String sds struct sdshdr{ //等于 SDS 保存字符串的长度 int len; //记录 bu ...

  7. docker加速器,设置cdn

    添加加速器 vim /etc/docker/daemon.json 添加如下内容 { "registry-mirrors": ["https://registry.doc ...

  8. Mybatis的分页工具

    配置拦截器插件 特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor. com.github.pagehelper.PageHelper 现在是一个特殊的 ...

  9. mfc HackerTools防止程序双开

    来自:https://github.com/TonyChen56/HackerTools 1 HANDLE hMutex = CreateMutexA(NULL, FALSE, "GuiSh ...

  10. win修改host问及那