Pelajaran 1.3
Berburu edge case
7 menit · 7 langkah
Langkah 1 dari 7 · Penjelasan
Edge case adalah input di pinggir aturan. Cek daftar ini setiap kali: kosong, satu item, duplikat atau seri, negatif, ukuran maksimal.
Contoh soal: "Return angka terbesar kedua yang berbeda, atau -1 kalau tidak ada." Untuk
[4, 9, 9, 2], jawabannya 4, bukan 9. 9 yang kedua adalah duplikat, jadi tidak boleh dihitung sebagai angka terbesar kedua.Langkah 2 dari 7 · Pilih pendekatan
Constraint:
1 ≤ nums.length ≤ 10⁵dan-10⁹ ≤ nums[i] ≤ 10⁹.
Input mana yang tidak mungkin muncul di test?[][-3][7, 7, 7]- Array berisi 100.000 angka
Langkah 3 dari 7 · Tebak hasilnya
Kode ini me-return angka terbesar kedua yang berbeda, atau -1 kalau tidak ada. Apa yang di-return untuk
[5, 5]?function solution(nums) { let first = -Infinity let second = -Infinity for (let i = 0; i < nums.length; i++) { const n = nums[i] if (n > first) { second = first first = n } else if (n > second && n < first) { second = n } } return second === -Infinity ? -1 : second}-150
Langkah 4 dari 7 · Cari bug-nya
Kode ini harus me-return angka terbesar kedua yang berbeda, atau -1 kalau tidak ada. Ia lolos
[4, 9, 2], tapi gagal di hidden test[9, 9](harusnya -1). Ketuk baris yang salah.function solution(nums) { let first = -Infinity let second = -Infinity for (let i = 0; i < nums.length; i++) { const n = nums[i] if (n > first) { second = first first = n } else if (n > second) { second = n } } return second === -Infinity ? -1 : second}Langkah 5 dari 7 · Tebak hasilnya
Kode ini me-return angka terbesar kedua yang berbeda, atau -1 kalau tidak ada. Apa hasilnya untuk
[-3, -7]?function solution(nums) { let first = -Infinity let second = -Infinity for (let i = 0; i < nums.length; i++) { const n = nums[i] if (n > first) { second = first first = n } else if (n > second && n < first) { second = n } } return second === -Infinity ? -1 : second}-7-1-3
Langkah 6 dari 7 · Tulis kodenya
solution(nums)Return angka terkecil di
nums. Kalaunumskosong, returnnull.
Constraint:0 ≤ nums.length ≤ 100,-1000 ≤ nums[i] ≤ 1000.function solution(nums) { // [3, 1, 2] -> 1 // [] -> null }Langkah 7 dari 7 · Ringkasan
- Daftar cek edge case: kosong, satu item, duplikat, negatif, ukuran maksimal.
- Constraint memberi tahu mana yang mungkin dan mana yang tidak.
- Nilai awal
-Infinityataunums[0]aman untuk angka negatif. Nilai awal 0 tidak.