27. Remove Element

LeetCode easy original: C# #array #csharp #easy #leetcode
El texto de la tarea se traduce del ruso para el idioma seleccionado. El código no cambia.
given entero arreglo nums и целочисленное значение, удалите все вхождения val в nums на месте. Порядок elementов может быть изменен. Затем return количество elementов в виде чисел, которые не равны val.

Учитывайте количество elementов в nums, которые не равны val be k. Чтобы вас приняли, вам необходимо сделать следующее:

Измените arreglo nums так, чтобы первые k elementов nums содержали elementы, не равные val. Остальные elementы nums не важны, как и размер nums.
Вернуть К.

C# solución

coincidente/original
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++ solución

borrador automático, revisar antes de enviar
#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 solución

coincidente/original
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 solución

coincidente/original
/**
 * @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 solución

coincidente/original
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 solución

coincidente/original
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
}

Приведенное Explicación верно для данного метода `RemoveElement`. В данном методе Algoritmo работает следующим образом:

1. Проверяем, что arreglo `nums` не равен `null` и его длина не равна 0. Если это так, возвращаем 0.

2. Создаем переменную `i`, которая будет отслеживать позицию для вставки уникальных elementов без значения `val`.

3. Запускаем цикл `for` для перебора всех elementов arregloа `nums` с помощью индекса `j`.

4. В цикле проверяем, если текущий element `nums[j]` равен значению `val`, увеличиваем индекс `j`, пока не найдем следующий element, отличный от `val` или не достигнем конца arregloа.

5. Когда найден уникальный element (не равный `val`), копируем его в arreglo на позицию `i` и увеличиваем `i`.

6. В конце метод returns значение `i`, которое представляет новую длину arregloа после удаления всех elementов со значением `val`.

Этот метод позволяет удалять все экземпляры указанного значения из arregloа, сохраняя порядок оставшихся elementов. Он эффективно обрабатывает случаи, когда нужно удалить конкретное значение из arregloа и вернуть новую длину arregloа после удаления.

Vacantes para esta tarea

Se muestran vacantes activas con etiquetas coincidentes.

Todas las vacantes
Todavía no hay vacantes activas.