`

Leetcode - Remove Elements

 
阅读更多

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 new length.

[分析] 注意内部while的判断条件有等号,考虑nums]{1}, val=1
public class Solution {
    public int removeElement(int[] nums, int val) {
        if (nums == null || nums.length == 0)
            return 0;
        int p = 0, q = nums.length - 1;
        while (true) {
            while (p <= q && nums[p] != val) p++;
            while (p <= q && nums[q] == val) q--;
            if (p < q) {
                nums[p++] = nums[q];
                nums[q] = val;
            } else {
                break;
            }
        }
        return q + 1;
    }
}
分享到:
评论
1 楼 qb_2008 2015-07-29  
因为在最后的时候,q必须指向一个非val的元素。如果while中没有等号,这个条件就可能不成立。

相关推荐

    zwangZJU#LeetCode-in-python-wznote#LeetCode-python-203-移除链表元素1

    要考虑第一个节点要被删除的情况代码实现self.next = Nonedef removeElements(self, head: ListNode, val:

    python-leetcode题解之203-Remove-Linked-List-Elements.py

    python python_leetcode题解之203_Remove_Linked_List_Elements.py

    leetcode摇摆-Leetcode-Learning:Leetcode-学习

    leetcode摇摆Leetcode-学习 2020/02/02 完成 Q29 & 35 2020/02/05 成品 Q58 split() function: str.split( ) means Space-separated Q69 math.sqrt() 2020/02/11 成品 Q299 Remove all rigth position element and ...

    go代码-https://leetcode-cn.com/problems/insert-delete-getrandom-o1-duplicates-allowed/comments/ 381. O(1) 时间插入、删除和获取随机元素 - 允许重复

    在LeetCode的381题中,我们面临的是一个数据结构设计的问题,要求实现一个支持O(1)时间复杂度的插入、删除和随机获取元素的接口,而且允许元素重复。这个问题的关键在于如何高效地管理和操作一个有重复元素的动态...

    LeetCode最全代码

    462 | [Minimum Moves to Equal Array Elements II](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [C++](./C++/minimum-moves-to-equal-array-elements-ii.cpp) [Python](./Python/...

    leetcode中国-LeetCode:LeetCodeLeetCode课程

    leetcode中国#LeetCode 以下按其标签分类。 例如,它的标签是“链表”。...removeElements(ListNode* head, int val) #234 bool isPalindrome(ListNode* head) #160 ListNode* getIntersectionNode(Li

    leetcode跳跃-LeetCode:力扣刷题70道!

    Elements 力扣 206 反转链表 | Reverse Linked List 队列 Queue 力扣 933 最近的请求次数 | Number of Recent Calls 力扣 225 用队列实现栈 | Implement Stack Using Queue 力扣 622 设计循环队列 | Design ...

    Leetcode答案(c++版)

    **1.14 Remove LinkedList Elements (203)** - **问题描述**:删除链表中所有值为 val 的节点。 - **解题思路**: - 使用虚拟头节点简化处理。 - 遍历链表,如果遇到值为 val 的节点,则跳过该节点继续遍历。 **...

    python-leetcode面试题解之第203题移除链表元素-题解.zip

    这段代码首先定义了一个简单的链表节点类`ListNode`,然后定义了`removeElements`函数来执行删除操作。在函数中,我们通过循环遍历链表,处理每个节点,直到遍历结束。这个算法的时间复杂度为O(n),其中n是链表的...

    leetcode2sumc-LeetCode:LeetCode的一些题目

    leetcode 2 sum c LeetCode 帮助文档 帮助文档存放在Help文件夹下。 文件名 文件描述 ...complexitypython.txt Python的一些常规操作的...Elements no 206 Easy Reverse Linked List 234 Easy Palindrome Linked List

    java-leetcode题解之第203题移除链表元素.zip

    Solution类中有一个removeElements方法,接收链表头节点和目标值作为参数。方法内部通过两个指针pre和curr实现了链表的遍历和节点删除。 总结起来,LeetCode的第203题“移除链表元素”主要考察了Java中链表数据结构...

    leetcode算法题主函数如何写-leetcode:leetcode

    leetcode算法题主函数如何写 leetcode 每日一题 从今天开始,每天必须完成至少2题。即为保持写代码的手感,也巩固一下编码的基础知识。 2018.1.23 题目:Remove ...elements of nums being 1 and 2 respective

    leetcode打不开-leetcode:leetcode

    leetcode打不开1. 二和 1.建立哈希表(key为输入数组的值,value为输入数组的索引) 2.遍历输入数组,使用哈希表查找第二个数字 3. 无重复字符的最长子串 1.使用headIndex和endIndex表示当前子串2.使用哈希表...

    xiaoxfan#leetcode#203. 移除链表元素1

    示例:输出: 1-&gt;2-&gt;3-&gt;4-&gt;5方法一递归func removeElements(head *ListNode, val int) *ListNode

    Leetcode部分试题解析

    27. **Remove Linked List Elements**:移除链表中的特定元素。可以使用迭代方法,同时保持指向下一个非目标节点的引用。 28. **Remove Element**:从数组中移除特定元素。双指针法可以有效地完成这个任务。 29. *...

    leetcod 203.移除链表元素:

    (题目来源:https://leetcode.cn/problems/remove-linked-list-elements/description/) 解题思路有两种:(一)要移除链表中值为val的节点,我们肯定是要将链表遍历一遍的,关键是我们在遍历中如何操作是一个问题...

    leetcode:移除链表元素 python解法

    def removeElements(self, head: ListNode, val: int) -&gt; ListNode: # 创建哑节点 dummy = ListNode(-1) # 哑节点指向头节点 dummy.next = head # 使用next指针遍历链表 next = dummy while next != None ...

Global site tag (gtag.js) - Google Analytics