Skip to content

Commit bd1ba5a

Browse files
committed
27. Remove Element
```Solution.c int removeElement(int* nums, int numsSize, int val) { int n = numsSize, i = 0; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; --n; } else { ++i; } } return n; } ``` ```Solution.cpp class Solution { public: int removeElement(vector<int>& nums, int val) { int n = (int)nums.size(); int i = 0; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; --n; } else { ++i; } } return n; } }; ``` ```Solution.cs public class Solution { public int RemoveElement(int[] nums, int val) { int n = nums.Length, i = 0; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; n--; } else { i++; } } return n; } } ``` ```Solution.dart class Solution { int removeElement(List<int> nums, int val) { int n = nums.length; int i = 0; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; n--; } else { i++; } } return n; } } ``` ```Solution.go func removeElement(nums []int, val int) int { n := len(nums) i := 0 for i < n { if nums[i] == val { nums[i] = nums[n-1] n-- } else { i++ } } return n } ``` ```Solution.java class Solution { public int removeElement(int[] nums, int val) { int n = nums.length, i = 0; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; n--; } else { i++; } } return n; } } ``` ```Solution.js /** * @param {number[]} nums * @param {number} val * @return {number} */ var removeElement = function(nums, val) { let n = nums.length, i = 0; while (i < n) { if (nums[i] === val) { nums[i] = nums[n - 1]; n--; } else { i++; } } return n; }; ``` ```Solution.kt class Solution { fun removeElement(nums: IntArray, `val`: Int): Int { var n = nums.size var i = 0 while (i < n) { if (nums[i] == `val`) { nums[i] = nums[n - 1] n-- } else { i++ } } return n } } ``` ```Solution.php class Solution { /** * @param Integer[] $nums * @param Integer $val * @return Integer */ function removeElement(&$nums, $val) { $n = count($nums); $i = 0; while ($i < $n) { if ($nums[$i] === $val) { $nums[$i] = $nums[$n - 1]; $n--; } else { $i++; } } return $n; } } ``` ```Solution.py class Solution: def removeElement(self, nums: list[int], val: int) -> int: n, i = len(nums), 0 while i < n: if nums[i] == val: nums[i] = nums[n - 1] n -= 1 else: i += 1 return n ``` ```Solution.rb # @param {Integer[]} nums # @param {Integer} val # @return {Integer} def remove_element(nums, val) n = nums.length i = 0 while i < n if nums[i] == val nums[i] = nums[n - 1] n -= 1 else i += 1 end end n end ``` ```Solution.rs impl Solution { pub fn remove_element(nums: &mut Vec<i32>, val: i32) -> i32 { let mut n = nums.len(); let mut i = 0usize; while i < n { if nums[i] == val { nums[i] = nums[n - 1]; n -= 1; } else { i += 1; } } n as i32 } } ``` ```Solution.scala object Solution { def removeElement(nums: Array[Int], v: Int): Int = { var n = nums.length var i = 0 while (i < n) { if (nums(i) == v) { nums(i) = nums(n - 1) n -= 1 } else { i += 1 } } n } } ``` ```Solution.swift class Solution { func removeElement(_ nums: inout [Int], _ val: Int) -> Int { var n = nums.count var i = 0 while i < n { if nums[i] == val { nums[i] = nums[n - 1] n -= 1 } else { i += 1 } } return n } } ``` ```Solution.ts function removeElement(nums: number[], val: number): number { let n = nums.length, i = 0; while (i < n) { if (nums[i] === val) { nums[i] = nums[n - 1]; n--; } else { i++; } } return n; } ```
1 parent dba7727 commit bd1ba5a

19 files changed

+266
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# [**27. Remove Element**](https://leetcode.com/problems/remove-element/description/)
2+
3+
Given an integer array `nums` and an integer `val`, remove all occurrences of `val` in `nums` [**in-place**](https://en.wikipedia.org/wiki/In-place_algorithm). The order of the elements may be changed. Then return the number of elements in `nums` which are not equal to `val`.
4+
5+
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:
6+
- 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`.
7+
- Return `k`.
8+
9+
**Custom Judge:**
10+
11+
The judge will test your solution with the following code:
12+
```md
13+
int[] nums = [...]; // Input array
14+
int val = ...; // Value to remove
15+
int[] expectedNums = [...]; // The expected answer with correct length.
16+
// It is sorted with no values equaling val.
17+
18+
int k = removeElement(nums, val); // Calls your implementation
19+
20+
assert k == expectedNums.length;
21+
sort(nums, 0, k); // Sort the first k elements of nums
22+
for (int i = 0; i < actualLength; i++) {
23+
assert nums[i] == expectedNums[i];
24+
}
25+
```
26+
If all assertions pass, then your solution will be **accepted**.
27+
28+
#### **Example 1:**
29+
```md
30+
Input: nums = [3,2,2,3], val = 3
31+
Output: 2, nums = [2,2,_,_]
32+
Explanation: Your function should return k = 2, with the first two elements of nums being 2.
33+
It does not matter what you leave beyond the returned k (hence they are underscores).
34+
```
35+
36+
#### **Example 2:**
37+
```md
38+
Input: nums = [0,1,2,2,3,0,4,2], val = 2
39+
Output: 5, nums = [0,1,4,0,3,_,_,_]
40+
Explanation: Your function should return k = 5, with the first five elements of nums containing 0, 0, 1, 3, and 4.
41+
Note that the five elements can be returned in any order.
42+
It does not matter what you leave beyond the returned k (hence they are underscores).
43+
```
44+
45+
#### **Constraints:**
46+
> - `0 <= nums.length <= 100`
47+
> - `0 <= nums[i] <= 50`
48+
> - `0 <= val <= 100`
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
int removeElement(int* nums, int numsSize, int val) {
2+
int n = numsSize, i = 0;
3+
while (i < n) {
4+
if (nums[i] == val) {
5+
nums[i] = nums[n - 1];
6+
--n;
7+
} else {
8+
++i;
9+
}
10+
}
11+
return n;
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
int removeElement(vector<int>& nums, int val) {
4+
int n = (int)nums.size();
5+
int i = 0;
6+
while (i < n) {
7+
if (nums[i] == val) {
8+
nums[i] = nums[n - 1];
9+
--n;
10+
} else {
11+
++i;
12+
}
13+
}
14+
return n;
15+
}
16+
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
public class Solution {
2+
public int RemoveElement(int[] nums, int val) {
3+
int n = nums.Length, i = 0;
4+
while (i < n) {
5+
if (nums[i] == val) {
6+
nums[i] = nums[n - 1];
7+
n--;
8+
} else {
9+
i++;
10+
}
11+
}
12+
return n;
13+
}
14+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
int removeElement(List<int> nums, int val) {
3+
int n = nums.length;
4+
int i = 0;
5+
while (i < n) {
6+
if (nums[i] == val) {
7+
nums[i] = nums[n - 1];
8+
n--;
9+
} else {
10+
i++;
11+
}
12+
}
13+
return n;
14+
}
15+
}

sol/solution/0001-0100/0027/Solution.erl

Whitespace-only changes.

sol/solution/0001-0100/0027/Solution.ex

Whitespace-only changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
func removeElement(nums []int, val int) int {
2+
n := len(nums)
3+
i := 0
4+
for i < n {
5+
if nums[i] == val {
6+
nums[i] = nums[n-1]
7+
n--
8+
} else {
9+
i++
10+
}
11+
}
12+
return n
13+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution {
2+
public int removeElement(int[] nums, int val) {
3+
int n = nums.length, i = 0;
4+
while (i < n) {
5+
if (nums[i] == val) {
6+
nums[i] = nums[n - 1];
7+
n--;
8+
} else {
9+
i++;
10+
}
11+
}
12+
return n;
13+
}
14+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} val
4+
* @return {number}
5+
*/
6+
var removeElement = function(nums, val) {
7+
let n = nums.length, i = 0;
8+
while (i < n) {
9+
if (nums[i] === val) {
10+
nums[i] = nums[n - 1];
11+
n--;
12+
} else {
13+
i++;
14+
}
15+
}
16+
return n;
17+
};

0 commit comments

Comments
 (0)