Menu
CoddyTech

House Robber

Rumah-rumah berdiri berjajar di sepanjang jalan, dan nums[i] adalah uang di rumah i. Kamu boleh mengambil uang dari rumah mana pun yang kamu pilih, tetapi jangan pernah mengambil uang dari dua rumah yang berdiri berdampingan. Kembalikan jumlah total terbesar yang bisa kamu ambil.

Fungsi

rob(nums: integer-array) → integer
numsinteger-array
uang di setiap rumah, sesuai urutan jalan
Mengembalikaninteger
total terbesar yang bisa kamu ambil tanpa mengambil dari dua rumah yang bersebelahan

Batasan

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • Jawabannya paling banyak 5 × 106, jadi muat dalam integer 32-bit bertanda.

Contoh

Input
nums = [5, 3, 4, 11, 2]
Output
16
Penjelasan
Ambil 5 dan 11 dari rumah 0 dan 3 sehingga menjadi 16. Kamu boleh melewati dua rumah berturut-turut, dan cara ini mengalahkan semua rencana lainnya: 5 + 4 + 2 = 11 dan 3 + 11 = 14.
challenge icon

Pertanyaan lanjutan

Kembalikan rumah-rumah yang akan diambil beserta jumlah totalnya. Apa yang harus kamu simpan dari tabel untuk menyusun kembali daftar itu, dan apakah dua total berjalan masih bisa melakukannya?

Reset kode
def rob(nums):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

nums = [5, 3, 4, 11, 2]

Output yang diharapkan

16