题目:删除链表中倒数第n个节点
2015-08-19 18:58
399 查看
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.
注意
链表中的节点个数大于等于n
挑战
O(n)时间复杂度
标签 Expand
两根指针
链表
相关题目 Expand
/**
* 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 x = head;
int count = 0;
while (x != null) {
count++;
x = x.next;
}
int asc = count - n;
ListNode res = new ListNode(-1000);
ListNode resx = res;
ListNode headx = head;
int i = 0;
while (headx.next != null) {
if(i == asc) {
headx = headx.next;
}else{
resx.next = headx;
resx = resx.next;
headx = headx.next;
}
i++;
}
if(i==asc){
resx.next = null;
}else{
resx.next = headx;
}
return res.next;
}
}
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.
注意
链表中的节点个数大于等于n
挑战
O(n)时间复杂度
标签 Expand
两根指针
链表
相关题目 Expand
/**
* 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 x = head;
int count = 0;
while (x != null) {
count++;
x = x.next;
}
int asc = count - n;
ListNode res = new ListNode(-1000);
ListNode resx = res;
ListNode headx = head;
int i = 0;
while (headx.next != null) {
if(i == asc) {
headx = headx.next;
}else{
resx.next = headx;
resx = resx.next;
headx = headx.next;
}
i++;
}
if(i==asc){
resx.next = null;
}else{
resx.next = headx;
}
return res.next;
}
}
相关文章推荐
- 图像处理
- Parallels Desktop如何创建虚拟机模板
- 题目:删除排序链表中的重复元素
- main() 参数:argc 与 argv
- Android笔记(三)为按钮添加事件
- linux下类似Bus Hound的工具
- 字符串常用函数汇总【持续更新中........】
- [LightOJ1370]Bi-shoe and Phi-shoe
- 题目:删除排序数组中的重复数字 II
- Linux 命令行Shell快捷键
- HDU-1875 畅通工程再续(最小生成树[Prim])
- 暗色调,调出紫红色的暗调晨曦照片效果(转)
- ios 点击返回顶部效果的实现,类似单击状态栏效果
- 学习资料备忘录
- 【LeetCode】116. Populating Next Right Pointers in Each Node
- 在 Java 中如何更高效地存储和管理 SQL 语句?
- Oracle 设置表空间自增长
- eclipse 终极操作技巧
- 在 Java 中如何更高效地存储和管理 SQL 语句?
- 浅析关系数据库和NoSql非关系数据库