Rumah >pembangunan bahagian belakang >Tutorial Python >Elemen Alih Keluar Hari Leetcode Dijelaskan

Elemen Alih Keluar Hari Leetcode Dijelaskan

WBOY
WBOYasal
2024-07-16 19:46:461188semak imbas

Leetcode Day Remove Element Explained

Masalahnya adalah seperti berikut:

Memandangkan nums tatasusunan integer dan val integer, alih keluar semua kejadian val dalam nums di tempat. Susunan unsur boleh diubah. Kemudian kembalikan bilangan elemen dalam nombor yang tidak sama dengan val.

Pertimbangkan bilangan elemen dalam nombor yang tidak sama dengan val be k, untuk diterima, anda perlu melakukan perkara berikut:

  • Tukar nombor tatasusunan supaya unsur k pertama nombor mengandungi unsur yang tidak sama dengan val. Elemen nombor yang selebihnya tidak penting begitu juga dengan saiz nombor.
  • Kembali k.

Hakim Tersuai:

Hakim akan menguji penyelesaian anda dengan kod berikut:

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];
}

Jika semua penegasan lulus, maka penyelesaian anda akan diterima.

Contoh 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).

Contoh 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).

Berikut ialah cara saya menyelesaikannya:

Untuk menyelesaikan masalah ini, saya menggunakan dua strategi utama:

  1. Penggantian Di Tempat: Daripada mencipta tatasusunan baharu untuk menyimpan elemen yang tidak sama dengan val, gunakan nombor tatasusunan yang sama untuk menulis ganti elemen yang perlu dialih keluar.
  2. Teknik Dua Penunjuk: Satu penuding (i) berulang melalui setiap elemen dalam tatasusunan, dan penuding lain (k) menjejaki kedudukan di mana elemen bukan val seterusnya harus diletakkan.
  • Mula-mula, mulakan penunjuk k dan tetapkannya kepada 0. Ini akan menjejaki kedudukan di mana elemen bukan val seterusnya harus diletakkan.
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:       
    k = 0
  • Lelaran melalui tatasusunan nombor.
  • Semak sama ada nombor elemen semasa[i] berbeza daripada val untuk menjejaki k.
  • Jika ya, gerakkan elemen nums[i] ke kedudukan ke-k dan tambah k sebanyak 1 untuk mengemas kini kedudukan bagi elemen bukan val seterusnya.
for i in range(len(nums)):
    if nums[i] != val:
        nums[k] = nums[i]
        k += 1
  • Kembalikan k, iaitu bilangan elemen yang tidak sama dengan val.
return k

Berikut ialah penyelesaian yang lengkap:

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

Atas ialah kandungan terperinci Elemen Alih Keluar Hari Leetcode Dijelaskan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn