代码如下:
/**
* Definition of ListNode* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param node: a node in the list should be deleted
* @return: nothing
*/
void deleteNode(ListNode *node) {
// write your code here
ListNode *dummy=new ListNode(0);
dummy=node->next;
node->val=node->next->val;
node->next=node->next->next;
delete dummy;
}
};
心得:本题要求在o(1)的时间复杂度下进行对链表中的某元素的删除操作,因此要放弃那种采取循环结构的方式,因为那种方式的时间复杂度为o(n),
所以应该先定义一个指向该删除元素下一个元素的指针,并将其覆盖到该删除元素上(具体实现代码如上),之后再delete掉指针。