想法:
1.设链表长度为n,如5,头节点head,则最后一个元素位置为head-1。     
错误,发现行不通,此为链表非数组,存储位置不连续
 
2.设两个指针p,q,让p,q指向head,再让p指向head的下一个,若不为空,则交换pq(45321),接着q指向p,p指向p的下一个,若不为空则交换(43521),继续,直至p指向空,此时(43215),此时迭代了1次。迭代次数为链表的长度-1       
错误,理解题意错了,不是要求反向排序,而是链接的箭头逆序
 
----查看答案和思路,重新整理
 
 
 
 
迭代:

 
设三指针,其中p指针所指是算法中欲指向的位置,s指针是作为中间变量给p指针挪动位置和反转,q指针起的作用是前进
 
初始:p指向null,s和q指向head
当q.next不为空时,令q=q.next(向前移);s.next=p(反转);p=s(p移动位置向前);s=q(s移动向前);
当q.next为空,说明已经到了最后一个元素,此时直接将s.next=p(反转);或者也可以将q.next=p,也可以反转,反正s和q此时都是指向最后一个元素
 
 1 /**
2 * Definition for singly-linked list.
3 * public class ListNode {
4 * int val;
5 * ListNode next;
6 * ListNode() {}
7 * ListNode(int val) { this.val = val; }
8 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
9 * }
10 */
11 class Solution {
12 public ListNode reverseList(ListNode head) {
13 ListNode p,s,q=new ListNode();
14 p = null;
15 s = head;
16 q =head;
17 while (q.next != null){
18 q = q.next;
19 s.next = p;
20 p = s;
21 s = q;
22 }
23 q.next = p;
24 head = s;
25 return head;
26 }
27 }
 

 
 
 
 
 
 
 

Leecode 206.反转链表(Java)的更多相关文章

  1. Java实现 LeetCode 206 反转链表

    206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL ...

  2. LeetCode 206. 反转链表(Reverse Linked List) 16

    206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...

  3. leetCode:206 反转链表

    206. 反转链表 题目:反转一个单链表. 进阶:链表可以迭代或递归地反转.你能否两个都实现一遍? 非递归代码: class Solution { public ListNode reverseLis ...

  4. 每天一道面试题LeetCode 206 -- 反转链表

    LeetCode206 反转链表 思路 代码 # # @lc app=leetcode.cn id=206 lang=python3 # # [206] 反转链表 # # https://leetco ...

  5. Leetcode春季打卡活动 第二题:206. 反转链表

    Leetcode春季打卡活动 第二题:206. 反转链表 206. 反转链表 Talk is cheap . Show me the code . /** * Definition for singl ...

  6. leetcode 206. 反转链表 及 92. 反转链表 II

    206. 反转链表 问题描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1-> ...

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

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

  8. 15.反转链表 Java

    题目描述 输入一个链表,反转链表后,输出新链表的表头. 思路 本题的关键就是在于对next域的赋值,同时对下一个节点进行保存,然后对把下一个节点赋给新的节点,这样依次循环完所有的节点.每次使新插入的节 ...

  9. Leetcode题目206.反转链表(简单)

    题目描述: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: ...

  10. 《剑指offer》面试题16 反转链表 Java版

    (输入链表的头节点,反转链表) 书中方法:对于一个链表,我们只能从头往后遍历,如果要反转,我们需要更改当前节点的next域指向前一个节点,此时链表断开,为了能继续修改下一个节点的next域,我们还要维 ...

随机推荐

  1. centos7 yum安装配置Lnmp和负载配置

    首先配置防火墙CentOS 7.0默认使用的是firewall作为防火墙1.关闭firewall: systemctl stop firewalld.service #停止firewallsystem ...

  2. 【ZYNQ学习】ZYNQ架构介绍

    在上一篇博客中,主要介绍了ZYNQ的基本信息以及如何在vivado上实现自己的设计,但是在实际应用中,掌握ZYNQ的架构是必要的,因此在这篇博客中主要记录一下ZYNQ的架构 本篇博客的主要参考是ZYN ...

  3. 2019-2020-1 20199318《Linux内核原理与分析》第九周作业

    第8章 进程的切换和系统的一般执行过程 一.学习总结 Linux系统的一般执行过程: 最一般的情况:正在运行的用户态进程X切换到运行用户态进程Y的过程. (1)正在运行的用户态进程X; (2)发生中断 ...

  4. Java-Maven实现简单的文件上传下载(菜鸟一枚、仅供参考)

    1.JSP页面代码实现 <%@ page language="java" contentType="text/html; charset=UTF-8" p ...

  5. AWS ssm 连接实例

    aws ssm连接:aws ssm start-session \ --profile xxRole \ --region cn-northwest-1 \ --target i-08d6874428 ...

  6. SQL-建表注释

    ddl 是对表结构的操作 create(创建)命令.alter(修改)命令.drop(删除)dml 是对表数据的操作 insert(插入)命令.update(更新)命令.delete(删除) alte ...

  7. 力扣:面试题58 - II. 左旋转字符串

    菜鸡小白不禁感叹:C++真好用!!! 题目描述: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg& ...

  8. arthas jad 反编译 xxx类 ,报 No class found for:xxx

    可能的原因: 类名不对,需要用全限定名,并且注意区分大小写 根据官方的文档,arthas jad 只能反编译已经加载的类.

  9. 基础vue的一些知识补充

    一.:disabled 该属性能接受布尔值,可以用于元素的使用.当值为true时,该元素将无法被使用,如button的disabled属性被设置为true后,将无法被点击,input的disabled ...

  10. FastReport报表金额数字转大写问题

    在使用FastReport报表打印的时候涉及到财务结算金额时,会用到大写,系统保存的都为数字,将数字转换为大写没有默认的系统内置函数,经过查阅资料,可通过对FastReport的页面设计代码修改实现: ...