Home > Java > javaTutorial > Leetcode — Top Interview — Remove Element

Leetcode — Top Interview — Remove Element

DDD
Release: 2024-11-03 17:36:30
Original
386 people have browsed it

Leetcode — Top Interview  — Remove Element

It’s an easy problem that consists in:

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

In this problem you have to iterate the array and identify the value, and remove it from the nums.

At first glance you would think another array may do the trick, but later you will have to make another iteration just to set the values (setting straight would not work because java doesn’t update method variable references, meaning inside the method would look like it changed, but once outside the method it keeps old reference), and that would be bad performance wise.

Since the end result doesn’t rely on any other operation besides the values that are different would could simply keep an index and update values as you find them differently from var and also use the same as solution:

class Solution {
    public int removeElement(int[] nums, int val) {
        int diffIndex = 0;
        for(int i=0;i<nums.length;i++) {
            if(nums[i] != val)  {
                nums[diffIndex] = nums[i];
                diffIndex++;
            }
        }
        return diffIndex;
    }
}
Copy after login

Runtime: 0 ms, faster than 100.00% of Java online submissions for Remove Element.
Memory Usage: 42 MB, less than 31.68% of Java online submissions for Remove Element.

That’s it! If there is anything thing else to discuss feel free to drop a comment, if I missed anything let me know so I can update accordingly.

Until next post! :)

The above is the detailed content of Leetcode — Top Interview — Remove Element. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template