27. Remove Element
Учитывайте количество elementов в nums, которые не равны val be k. Чтобы вас приняли, вам необходимо сделать следующее:
Измените 배열 nums так, чтобы первые k elementов nums содержали elementы, не равные val. Остальные elementы nums не важны, как и размер nums.
Вернуть К.
C# 해법
매칭됨/원본public class Solution {
public int RemoveElement(int[] nums, int val) {
if (nums == null || nums.Length == 0)
return 0;
int i = 0;
for (int j = 0; j < nums.Length; j++)
{
while (j < nums.Length && nums[j] == val)
j++;
if (j < nums.Length)
nums[i++] = nums[j];
}
return i;
}
}
C++ 해법
자동 초안, 제출 전 검토#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int RemoveElement(vector<int>& nums, int val) {
if (nums == null || nums.size() == 0)
return 0;
int i = 0;
for (int j = 0; j < nums.size(); j++)
{
while (j < nums.size() && nums[j] == val)
j++;
if (j < nums.size())
nums[i++] = nums[j];
}
return i;
}
}
Java 해법
매칭됨/원본class Solution {
public int removeElement(int[] nums, int val) {
int left_most_index = 0;
for (int i = 0; i < nums.length; i++) {
if (nums[i] != val) {
nums[left_most_index++] = nums[i];
}
}
return left_most_index;
}
}
JavaScript 해법
매칭됨/원본/**
* @param {number[]} nums
* @param {number} val
* @return {number}
*/
var removeElement = function (nums, val) {
let k = 0;
for (const x of nums) {
if (x !== val) {
nums[k++] = x;
}
}
return k;
};
Python 해법
매칭됨/원본class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
k = 0
for i in range(len(nums)):
if nums[i] != val:
nums[k] = nums[i]
k += 1
return k
Go 해법
매칭됨/원본func removeElement(nums []int, val int) int {
j := 0
for i := 0; i < len(nums); i++ {
if nums[i] != val {
nums[j] = nums[i]
j++
}
}
return j
}
Приведенное 설명 верно для данного метода `RemoveElement`. В данном методе 알고리즘 работает следующим образом:
1. Проверяем, что 배열 `nums` не равен `null` и его длина не равна 0. Если это так, возвращаем 0.
2. Создаем переменную `i`, которая будет отслеживать позицию для вставки уникальных elementов без значения `val`.
3. Запускаем цикл `for` для перебора всех elementов 배열а `nums` с помощью индекса `j`.
4. В цикле проверяем, если текущий element `nums[j]` равен значению `val`, увеличиваем индекс `j`, пока не найдем следующий element, отличный от `val` или не достигнем конца 배열а.
5. Когда найден уникальный element (не равный `val`), копируем его в 배열 на позицию `i` и увеличиваем `i`.
6. В конце метод returns значение `i`, которое представляет новую длину 배열а после удаления всех elementов со значением `val`.
Этот метод позволяет удалять все экземпляры указанного значения из 배열а, сохраняя порядок оставшихся elementов. Он эффективно обрабатывает случаи, когда нужно удалить конкретное значение из 배열а и вернуть новую длину 배열а после удаления.
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.