非常感謝你閱讀本文~
歡迎【👍點贊】【?收藏】【📝評論】~
放棄不難,但堅持一定很酷~
希望我們大家都能每天進步一點點~
本文由 二當家的白帽子 https://le-yi.blog.csdn.net/ 博客原創~
文章目錄
- 02.03. 洗掉中間節點:
- 樣例 1
- 分析
- 題解
- java
- c
- c++
- python
- go
- 原題傳送門:https://leetcode-cn.com/problems/delete-middle-node-lcci/
02.03. 洗掉中間節點:
若鏈表中的某個節點,既不是鏈表頭節點,也不是鏈表尾節點,則稱其為該鏈表的「中間節點」,
假定已知鏈表的某一個中間節點,請實作一種演算法,將該節點從鏈表中洗掉,
例如,傳入節點 c(位于單向鏈表 a->b->c->d->e->f 中),將其洗掉后,剩余鏈表為 a->b->d->e->f
樣例 1
輸入:
節點 5 (位于單向鏈表 4->5->1->9 中)
輸出:
不回傳任何資料,從鏈表中洗掉傳入的節點 5,使鏈表變為 4->1->9
分析
- 鏈表前一個節點存有下一個節點的地址,一般的洗掉節點,是直接將當前節點的上一個節點與當前節點的下一個節點相連,
- 本題只傳入要洗掉的節點,所以當前節點的地址是不能變的,也就只能改變值了,在業務的角度看,并不關心鏈表的地址,關心的是里面的值,所以我們只要讓值看起來是刪掉了,就算是洗掉了當前節點,
- 這道題官方不讓選rust,二當家的只好舍掉,
題解
java
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
node.val = node.next.val;
node.next = node.next.next;
}
}
c
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
void deleteNode(struct ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
c++
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
node->val = node->next->val;
node->next = node->next->next;
}
};
python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteNode(self, node):
"""
:type node: ListNode
:rtype: void Do not return anything, modify node in-place instead.
"""
node.val = node.next.val
node.next = node.next.next
go
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteNode(node *ListNode) {
node.Val = node.Next.Val
node.Next = node.Next.Next
}

原題傳送門:https://leetcode-cn.com/problems/delete-middle-node-lcci/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/328004.html
標籤:python
