题目:

在O(1)时间复杂度删除链表节点

 给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。并在删除该节点后,返回表头。

样例

给定 1->2->3->4,和节点 3,返回 1->2->4。

解题:

方法好贱,先把要删除节点后面一个节点的值赋给删除节点,这样需要删除节点就删除了,再把删除节点指向删除节点后面节点的节点

就像这样:

        node.val = node.next.val;
        node.next = node.next.next;

Java程序:

/**
 * Definition for ListNode.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int val) {
 *         this.val = val;
 *         this.next = null;
 *     }
 * }
 */ 
public class Solution {
    /**
     * @param node: the node in the list should be deleted
     * @return: nothing
     */
    public void deleteNode(ListNode node) {
        // write your code here
        if(node==null)
            return;
        node.val = node.next.val;
        node.next = node.next.next;
        
    }
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
  • 2021-07-18
  • 2022-12-23
  • 2021-08-30
  • 2021-09-15
  • 2022-01-19
猜你喜欢
  • 2022-01-03
  • 2021-07-07
  • 2022-12-23
  • 2021-04-16
  • 2022-12-23
  • 2021-10-11
  • 2021-10-31
相关资源
相似解决方案