Elemen Alih Keluar Hari Leetcode Dijelaskan

WBOY
Lepaskan: 2024-07-16 19:46:46
asal
1172 orang telah melayarinya

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];
}
Salin selepas log masuk

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).
Salin selepas log masuk

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).
Salin selepas log masuk

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
Salin selepas log masuk
  • 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
Salin selepas log masuk
  • Kembalikan k, iaitu bilangan elemen yang tidak sama dengan val.
return k
Salin selepas log masuk

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
Salin selepas log masuk

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

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!