【LeetCode-面试算法经典-Java实现】【203-Remove Linked List Elements(删除单链表中的元素)】

【203-Remove Linked List Elements(删除单链表中的元素)】


【LeetCode-面试算法经典-Java实现】【所有题目目录索引】


代码下载【https://github.com/Wang-Jun-Chao】

原题

  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

题目大意

  给定一值val,在单链表中删除值为val的结点。

解题思路

  在链表头添加一个结点,对链表进遍历和删除操作。

代码实现

链表结点类

public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

算法实现类

public class Solution {

    public ListNode removeElements(ListNode head, int val) {
        ListNode root = new ListNode(1);
        root.next = head;
        // 调于记录要处理的元素的前驱结点
        ListNode prev = root;

        // prev.next表示要处理的结点
        while (prev.next != null) {
            // 要处理的结点是要删除的结点
            if (prev.next.val == val) {
                // 对结点进行删除操作
                prev.next = prev.next.next;
            }
            // 当前处理的节点不需要删除,prev移动到下一个结点
            else {
                prev = prev.next;
            }
        }

        // 返回新的根结点
        return root.next;
    }
}

评测结果

  点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。

特别说明

欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47997657

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 00:07:27

【LeetCode-面试算法经典-Java实现】【203-Remove Linked List Elements(删除单链表中的元素)】的相关文章

【LeetCode-面试算法经典-Java实现】【061-Rotate List(旋转单链表)】

[061-Rotate List(旋转单链表)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL. 题目大

【LeetCode-面试算法经典-Java实现】【086-Partition List(将单链表进行分区)】

[086-Partition List(将单链表进行分区)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x. You should preserve the original relative order of the

203. Remove Linked List Elements - LeetCode

Question 203.?Remove Linked List Elements Solution 题目大意:从链表中删除给定的数 思路:遍历链表,如果该节点的值等于给的数就删除该节点,注意首节点 Java实现: public ListNode removeElements(ListNode head, int val) { ListNode cur = head; while (cur != null) { if (cur.next != null && cur.next.val ==

leetCode 203. Remove Linked List Elements 链表

203. Remove Linked List Elements Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6Return: 1 --> 2 --> 3 --> 4 --> 5 题目大意: 删除链表中全部的目标元素. 代码如下:

203. Remove Linked List Elements [easy] (Python)

题目链接 https://leetcode.com/problems/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 –>

009实现一个算法来删除单链表中的一个结点,只给出指向那个结点的指针(keep it up)

呵呵,这个题不能直接删除已知的结点,因为是单链表,不知道前驱,只知道 后继结点,直接删除会使链表断开.不过我们可以删除已知结点的后继结点, 把后继结点的值赋值给已知结点. #include <iostream> struct Node { int data; Node* next; }; bool removeNode(Node* vNode) { if (vNode == NULL || vNode->next == NULL) return false; Node* pNext =

[算法浅析] 如何在O(1)的时间里删除单链表的结点

题目是这样的:给你一个单链表的表头,再给你其中某个结点的指针,要你删除这个结点,条件是你的程序必须在O(1)的时间内完成删除. 由于有的同学对链表还不是很熟悉,本文尽量描述的通俗易懂,老鸟请直接跳过前面一大段. 链表结构如下: struct node { int val; node* next; }; 题目不是很难,很快就能想到好办法:) 首先回顾一下普通的删除方法,首先通过表头,找到待删除结点(设为B)的前一个结点(设为A),将A的指向改一下就行,然后删除掉B结点就行了.要删除的结点一定要de

【LeetCode-面试算法经典-Java实现】【027-Remove Element(删除数组中指定的元素)】

[027-Remove Element(删除数组中的元素)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an array and a value, remove all instances of that value in place and return the new length. The order of elements can be changed. It doesn't matter what you leave beyond the

【LeetCode-面试算法经典-Java实现】【094-Binary Tree Inorder Traversal(二叉树中序遍历)】

[094-Binary Tree Inorder Traversal(二叉树中序遍历)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given a binary tree, return the inorder traversal of its nodes' values. 题目大意 对一棵二叉树进行中序遍历. 解题思路 解法一:递归实现,解法二:迭代实现. 代码实现 二叉树结点类 public class TreeNode { int val; TreeNod