List-remove element

来源:互联网 发布:python arff 读取 编辑:程序博客网 时间:2024/06/05 15:05

237. Delete Node in a Linked List

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.


/** * 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;    }}

203. Remove Linked List Elements

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public ListNode removeElements(ListNode head, int val) {        ListNode dummpy = new ListNode(0);        dummpy.next = head;        head = dummpy;        while(head.next!=null){            if(head.next.val == val){                head.next = head.next.next;            }else{                head = head.next;            }        }        return dummpy.next;    }}

82. Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } *///因为可能原先的头结点也存在重复,所以头结点不确定,这时候可以考虑使用dummpy Nodeclass Solution {    public ListNode deleteDuplicates(ListNode head) {        ListNode dummpy = new ListNode(0);        dummpy.next = head;        head = dummpy;        while(head.next!=null && head.next.next!=null){            if(head.next.val == head.next.next.val){                //删掉所有重复的元素                int val = head.next.val;                while(head.next != null && head.next.val == val){                    head.next = head.next.next;                }            }else{                //往后移动一位                head = head.next;            }        }        return dummpy.next;    }}


原创粉丝点击