• 面试经典150题——Day2


    一、题目

    27. Remove Element

    Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The order of the elements may be changed. Then return the number of elements in nums which are not equal to val.

    Consider the number of elements in nums which are not equal to val be k, to get accepted, you need to do the following things:

    Change the array nums such that the first k elements of nums contain the elements which are not equal to val. The remaining elements of nums are not important as well as the size of nums.
    Return k.
    Custom Judge:

    The judge will test your solution with the following code:

    int[] nums = […]; // Input array
    int val = …; // Value to remove
    int[] expectedNums = […]; // The expected answer with correct length.
    // It is sorted with no values equaling val.

    int k = removeElement(nums, val); // Calls your implementation

    assert k == expectedNums.length;
    sort(nums, 0, k); // Sort the first k elements of nums
    for (int i = 0; i < actualLength; i++) {
    assert nums[i] == expectedNums[i];
    }
    If all assertions pass, then your solution will be accepted.

    Example 1:

    Input: nums = [3,2,2,3], val = 3
    Output: 2, nums = [2,2,,]
    Explanation: Your function should return k = 2, with the first two elements of nums being 2.
    It does not matter what you leave beyond the returned k (hence they are underscores).
    Example 2:

    Input: nums = [0,1,2,2,3,0,4,2], val = 2
    Output: 5, nums = [0,1,4,0,3,,,_]
    Explanation: Your function should return k = 5, with the first five elements of nums containing 0, 0, 1, 3, and 4.
    Note that the five elements can be returned in any order.
    It does not matter what you leave beyond the returned k (hence they are underscores).

    Constraints:

    0 <= nums.length <= 100
    0 <= nums[i] <= 50
    0 <= val <= 100

    来源:leetcode

    二、题解

    双指针left与right

    class Solution {
    public:
        int removeElement(vector<int>& nums, int val) {
            int left = 0;
            for(int right = 0;right < nums.size();right++){
                if(nums[right] != val){
                    nums[left] = nums[right];
                    left++;
                }
            }
            return left;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    【STL】自定义string类
    【目标跟踪】|模板更新 时间上下文信息(UpdateNet)《Learning the Model Update for Siamese Trackers》
    WorkManager的学习二
    linux下安装 Chrome 和 chromedriver 以及 selenium webdriver 使用
    【课设/毕业设计】电力系统潮流计算(Matlab代码实现)
    Doker学习笔记1(狂神)
    Oracle 表创建和表管理
    Leetcode 435. 无重叠区间
    JavaScript基础语法(数据类型)
    NPM 常用命令(二)
  • 原文地址:https://blog.csdn.net/weixin_46841376/article/details/133612109