[面试算法题]有序列表删除节点-leetcode学习之旅(4)

原创 2015年11月18日 22:18:35

问题描述

Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

Supposed the linked list is 1 -> 2 -> 3 -> 4 and you are given the third node with value 3, the linked list should become 1 -> 2 -> 4 after calling your function.

Subscribe to see which companies asked this question
我们需要这样一个函数:从一个单链表中删除指定元素(不能是尾部),这个函数的参数只有这个被删除的节点。

假设这个单链表为 1 -> 2 -> 3 -> 4 。然后你传入的参数节点为第三个,值为3的那个,执行了这个函数之后,这个链表将变为 1 -> 2 -> 4
1 -> 2 -> 3 -> 4
cur next
我得到3这个节点作为参数的时候,把这个节点的指针命名为cur,然后也可以得到4这个节点,把这个节点的指针命名为next,这个时候,我也可以把3这个节点的值改为4,这时链表变为
1 -> 2 -> 4 -> 4
cur next
这时,接着把cur当前的next指针直接指向next的next指针。也就是说之间删掉next的这个节点即可。
这样对于这个链表就变为
1 -> 2 -> 4
结束了!

其实简单来说就是把传入节点的后面一个节点的值赋给自己,然后把自己后面的节点删掉即可。
当然也要注意一下异常检查,代码非常非常简单,这道题也非常非常基础,更是一种思维能力上的考验其实,而我是使用 Java 来写的,所以可以先不用考虑节点的“删除”问题。

java代码实现

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
public void deleteNode(ListNode node) {
if(node==null||node.next==null) return;
ListNode temp = node.next;
node.val = temp.val;
node.next = temp.next;
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

面试算法:获取重合列表的第一个相交节点

给定两个单向链表,如果他们有重合的话,如何设计算法,快速获得链表重合时的第一个相交节点。...

二叉树的最大深度算法面试题-leetcode学习之旅(3)

标题Maximum Depth of Binary Tree描述The maximum depth is the number of nodes along the longest path from...

算法面试题-leetcode学习之旅(二)

题目:Given a non-negative integer num, repeatedly add all its digits until the result has only one dig...

【LeetCode-面试算法经典-Java实现】【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】

【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a l...

[leetcode]Remove Duplicates from Sorted List (删除有序节点的值重复的节点 C语言)

Remove Duplicates from Sorted List Given a sorted linked list, delete all duplicates such that eac...

每天一道算法题(4)——O(1)时间内删除链表节点

1.思路         假设链表......---A--B--C--D....,要删除B。一般的做法是遍历链表并记录前驱节点,修改指针,时间为O(n)。删除节点的实质为更改后驱指针指向。这里,复制C...

【LeetCode-面试算法经典-Java实现】【018-4Sum(四个数的和)】

【018-4Sum(四个数的和)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given an array S of n integers, are there ele...

我的Java开发学习之旅------>Java经典面试题

我的Java开发学习之旅------>Java经典面试题 摘自张孝祥itcast 从享受生活的角度上来说:“程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没...

我的Java开发学习之旅------>Java经典面试题

从享受生活的角度上来说:“程序员并不是一种最好的职业,我认为两种人可以做程序员,第一,你不做程序员,你就没有什么工作可做,或者说是即使有可以做的工作但是你非常不愿意去做;第二,你非常痴迷和爱好程序,并...

2015美团算法工程师笔试、面试之旅

9月16日下午进行了美团笔试,8个大题+
  • dy01dy
  • dy01dy
  • 2014年09月17日 23:42
  • 4503
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[面试算法题]有序列表删除节点-leetcode学习之旅(4)
举报原因:
原因补充:

(最多只允许输入30个字)