Pengantar:
Terinspirasi oleh dua pertanyaan SO ini (tidak diragukan lagi dari kelas yang sama): cetak elemen dalam subarray jumlah maksimum tanpa elemen yang berdekatan java dan jumlah maksimum elemen yang tidak berdekatan dari array, untuk dicetak .
Tantangan:
Diberikan daftar bilangan bulat, menghasilkan urutan yang terdiri dari elemen yang tidak berdekatan yang memiliki jumlah tertinggi. Berikut beberapa contoh:
[1,2,3,-1,-3,2,5]
akan menghasilkan[1,3,5]
(dengan jumlah9
) pada indeks berbasis 0[0,2,6]
.[4,5,4,3]
akan menghasilkan[4,4]
(dengan jumlah8
) pada indeks berbasis 0[0,2]
atau[5,3]
(juga dengan jumlah8
) pada indeks berbasis 0[1,3]
.[5,5,10,100,10,5]
akan menghasilkan[5,100,5]
(dengan jumlah110
) pada indeks berbasis 0[0,3,5]
atau[1,3,5]
.
Yang paling penting tentang contoh-contoh di atas, indeks yang mengandung unsur-unsur setidaknya 2 terpisah satu sama lain. Jika kita melihat contoh [5,5,10,100,10,5]
lebih mendalam: kita memiliki potensi berikut berikut yang mengandung item yang tidak berdekatan; dengan indeks mereka di bawahnya; dengan jumlah mereka di bawah itu:
[[5],[10],[100],[10],[5],[5],[100,5],[10,5],[10,10],[5,5],[5,10],[5,100],[5,5],[5,10],[5,100],[5,10],[5,100,5],[5,100,5],[5,10,5],[5,10,10]] // non-adjacent subsequences
[[5],[ 4],[ 3],[ 2],[1],[0],[ 3,5],[ 2,5],[ 2, 4],[1,5],[1, 4],[1, 3],[0,5],[0, 4],[0, 3],[0, 2],[1, 3,5],[0, 3,5],[0, 2,5],[0, 2, 4]] // at these 0-based indices
[ 5, 10, 100, 10, 5, 5, 105, 15, 20, 10, 15, 105, 10, 15, 105, 15, 110, 110, 20, 25] // with these sums
^ ^ // and these two maximums
Karena jumlah maksimumnya adalah 110
, kami mengeluarkan [5,100,5]
sebagai hasilnya.
Aturan tantangan:
- Anda diizinkan untuk mengeluarkan pasangan nilai kunci dari nilai indeks +. Jadi alih-alih
[5,100,5]
Anda dapat menampilkan[[0,5],[3,100],[5,5]]
atau[[1,5],[3,100],[5,5]]
sebagai hasilnya (atau[[1,5],[4,100],[6,5]]
/[[2,5],[4,100],[6,5]]
ketika pengindeksan berbasis 1 digunakan, bukan berbasis 0).- Jika Anda menggunakan pasangan nilai kunci, mereka juga bisa dalam urutan terbalik atau acak, karena jelas nilai mana yang dimaksudkan karena indeks pasangan.
- Mengeluarkan hanya indeks tanpa nilai tidak diizinkan. Ini harus menampilkan nilai, atau nilai / indeks sebagai pasangan nilai kunci (atau dua daftar terpisah untuk 'kunci' dan 'nilai' dengan ukuran yang sama jika pasangan nilai kunci tidak dimungkinkan dalam bahasa pilihan Anda).
- Anda diizinkan untuk menampilkan semua kemungkinan berikutnya dengan jumlah maksimum, bukan hanya satu.
- Seperti yang Anda lihat dari contoh, daftar input dapat berisi nilai negatif dan duplikat juga. Anda dapat menganggap bilangan bulat input berada dalam kisaran .
- Daftar keluaran tidak boleh kosong dan harus selalu mengandung setidaknya satu elemen (jika daftar hanya akan berisi nilai negatif, daftar yang berisi nilai negatif terendah tunggal akan dihasilkan sebagai hasilnya - lihat dua kasus uji terakhir).
- Jika ada satu kemungkinan output tetapi untuk beberapa indeks berbeda, itu diperbolehkan untuk menghasilkan keduanya meskipun mereka mungkin terlihat duplikat. (yaitu contoh di atas, dapat menampilkan
[[5,100,5],[5,100,5]]
untuk kedua kombinasi indeks yang mungkin).
Kasus uji:
Input: Possible outputs: At 0-based indices: With sum:
[1,2,3,-1,-3,2,5] [1,3,5] [0,2,6] 9
[4,5,4,3] [4,4]/[5,3] [0,2]/[1,3] 8
[5,5,10,100,10,5] [5,100,5] [0,3,5]/[1,3,5] 110
[10] [10] [0] 10
[1,1,1] [1,1] [0,2] 2
[-3,7,4,-2,4] [7,4] [1,4] 11
[1,7,4,-2] [7] [1] 7
[1,2,-3,-4,5,6,-7] [2,6] [1,5] 8
[800,-31,0,0,421,726] [800,726]/[800,0,726] [0,5]/[0,3,5]/[0,2,5] 1526
[-1,7,8,-5,40,40] [8,40] [2,4]/[2,5] 48
[-5,-18,-3,-1,-10] [-1] [3] -1
[0,-3,-41,0,-99,-2,0] [0]/[0,0]/[0,0,0] [0]/[3]/[6]/[0,3]/
[0,6],[3,6]/[0,3,6] 0
powerset
Apakah seperangkat himpunan bagian bukan? tetapi sepertinya Anda mengembalikan satu set berikutnya? [4,5,4,3] akan menghasilkan [4,4] di mana [4,4] jelas bukan set.
[5,100,5]
dua kali untuk contoh ketiga Anda.