Ia adalah masalah mudah yang terdiri daripada:
Memandangkan nombor tatasusunan integer dan val integer, alih keluar semua kejadian val dalam nombor 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 = [...]; // Tatasusunan input
int val = ...; // Nilai untuk dialih keluar
int[] expectedNums = [...]; // Jawapan yang dijangkakan dengan panjang yang betul.
// Ia diisih tanpa nilai yang menyamai val.
int k = removeElement(bilangan, val); // Memanggil pelaksanaan anda
menegaskan k == expectedNums.length;
sort(nombor, 0, k); // Isih elemen k pertama nombor
untuk (int i = 0; i < Panjang sebenar; i ) {
tegaskan nums[i] == expectedNums[i];
}Jika semua penegasan lulus, maka penyelesaian anda akan diterima.
Contoh 1:
Input: nombor = [3,2,2,3], val = 3
Output: 2, nombor = [2,2,,]
Penjelasan: Fungsi anda seharusnya mengembalikan k = 2, dengan dua elemen nombor pertama ialah 2.
Tidak kira apa yang anda tinggalkan melebihi k yang dikembalikan (oleh itu ia adalah garis bawah).Contoh 2:
Input: angka = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nombor = [0,1,4,0,3,,,_]
Penjelasan: Fungsi anda harus mengembalikan k = 5, dengan lima elemen nombor pertama mengandungi 0, 0, 1, 3 dan 4.
Ambil perhatian bahawa lima elemen boleh dikembalikan dalam sebarang susunan.
Tidak kira apa yang anda tinggalkan melebihi k yang dikembalikan (oleh itu ia adalah garis bawah).Kekangan:
0 <= nums.length <= 100
0 <= angka[i] <= 50
0 <= val <= 100
Dalam masalah ini, anda perlu mengulang tatasusunan dan mengenal pasti nilai, dan mengeluarkannya daripada nombor.
Pada pandangan pertama anda akan fikir tatasusunan lain mungkin melakukan silap mata, tetapi kemudian anda perlu membuat lelaran lain hanya untuk menetapkan nilai (menetap lurus tidak akan berfungsi kerana java tidak mengemas kini rujukan pembolehubah kaedah, bermakna di dalam kaedah akan kelihatan seperti ia berubah, tetapi apabila di luar kaedah ia mengekalkan rujukan lama), dan itu akan menjadi prestasi yang buruk dari segi bijak.
Memandangkan hasil akhir tidak bergantung pada sebarang operasi lain selain nilai yang berbeza, hanya boleh menyimpan indeks dan nilai kemas kini kerana anda mendapatinya berbeza daripada var dan juga menggunakan penyelesaian yang sama:
class Solution { public int removeElement(int[] nums, int val) { int diffIndex = 0; for(int i=0;i<nums.length;i++) { if(nums[i] != val) { nums[diffIndex] = nums[i]; diffIndex++; } } return diffIndex; } }
Masa Jalan: 0 ms, lebih cepat daripada 100.00% penyerahan dalam talian Java untuk Remove Element.
Penggunaan Memori: 42 MB, kurang daripada 31.68% penyerahan dalam talian Java untuk Remove Element.
—
Itu sahaja! Jika ada perkara lain untuk dibincangkan, sila tinggalkan ulasan, jika saya terlepas apa-apa beritahu saya supaya saya boleh mengemas kini dengan sewajarnya.
Sehingga post seterusnya! :)
Atas ialah kandungan terperinci Leetcode — Temuduga Teratas — Alih Keluar Elemen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!