27. Remove Element

LeetCode easy original: C# #array #csharp #easy #leetcode
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.
given 정수 배열 nums и целочисленное значение, удалите все вхождения val в nums на месте. Порядок elementов может быть изменен. Затем return количество elementов в виде чисел, которые не равны val.

Учитывайте количество 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 표시됨.

전체 채용
아직 활성 채용이 없습니다.