Java
来源:互联网 发布:学网络编程 编辑:程序博客网 时间:2024/06/06 09:37
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。
注意事项
链表中的节点个数大于等于n
样例
给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.
挑战
O(n)时间复杂度
/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param head: The first node of linked list. * @param n: An integer. * @return: The head of linked list. */ ListNode removeNthFromEnd(ListNode head, int n) { // write your code here ListNode p=head; ListNode q=head; for(int i=0;i<n;i++){ p=p.next; } if(p==null){ head=head.next; return head; } while(p.next!=null){ p=p.next; q=q.next; } q.next=q.next.next; return head; }}
思路很简单,只有两种出现的情况,1、链表的长度刚刚好等于n,也就是说删除表头节点,2、链表长度大于n,那么我们先定义两个表头,一个后移n位,然后两个链表同时后移
,这时当后面的节点到达尾部时,前面的节点就是删除的节点的前一个节点。
阅读全文
0 0
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- java
- JAVA?
- java
- Python入门记录
- 图解Spring AOP
- Javascript的event对象属性详解
- session原理以及安全性
- Android 连续按两次返回键退出程序
- Java
- 刷题——Saruman's Army POJ
- 01Trie求最大异或
- 转换枚举
- 程序人生
- 简单防止多次点击,例如防止弹出两个相同popwidow
- HBase1.1.2增删改查scala代码实现
- 2017.8.08 SSL 模拟赛
- python中的私有化