860. Lemonade Change
Kesukaran: Mudah
Topik: Susunan, Tamak
Di gerai air limau, setiap limau berharga $5. Pelanggan sedang beratur untuk membeli daripada anda dan memesan satu demi satu (mengikut susunan yang ditentukan oleh bil). Setiap pelanggan hanya akan membeli satu limun dan membayar sama ada dengan bil $5, $10 atau $20. Anda mesti memberikan perubahan yang betul kepada setiap pelanggan supaya transaksi bersih ialah pelanggan membayar $5.
Perhatikan bahawa anda tidak mempunyai sebarang perubahan pada mulanya.
Memandangkan bil tatasusunan integer dengan bil[i] ialah bil yangke pelanggan bayar, pulangkan benar jika anda boleh memberikan perubahan yang betul kepada setiap pelanggan atau palsu sebaliknya .
Contoh 1:
-
Input: bil = [5,5,5,10,20]
-
Output: benar
-
Penjelasan:
- Daripada 3 pelanggan pertama, kami mengumpul tiga bil $5 mengikut urutan.
- Daripada pelanggan keempat, kami mengumpul bil $10 dan mengembalikan $5.
- Daripada pelanggan kelima, kami memberikan bil $10 dan bil $5.
- Memandangkan semua pelanggan mendapat perubahan yang betul, kami menghasilkan yang benar.
Contoh 2:
-
Input: bil = [5,5,10,10,20]
-
Output: palsu
-
Penjelasan:
- Daripada dua pelanggan pertama dalam pesanan, kami mengumpul dua bil $5.
- Untuk pesanan dua pelanggan seterusnya, kami mengumpul bil $10 dan mengembalikan bil $5.
- Untuk pelanggan terakhir, kami tidak boleh memberikan semula pertukaran $15 kerana kami hanya mempunyai dua bil $10.
- Memandangkan tidak setiap pelanggan menerima perubahan yang betul, jawapannya adalah palsu.
Kekangan:
- 5
-
bil[i] ialah sama ada 5, 10 atau 20.
Penyelesaian:
Kita perlu mensimulasikan proses menyediakan perubahan kepada pelanggan berdasarkan bil yang mereka gunakan untuk membayar. Perkara utama ialah menjejaki bilangan bil $5 dan $10 yang anda miliki, kerana ini diperlukan untuk menyediakan perubahan bagi bil yang lebih besar
Mari laksanakan penyelesaian ini dalam PHP: 860. Lemonade Change
Penjelasan:
Permulaan: Kami bermula dengan $lima dan $sepuluh ditetapkan kepada 0, mewakili kiraan $5 dan $10 bil yang kami ada.
-
Memproses Setiap Bil:
-
Jika pelanggan membayar dengan bil $5: Kami hanya menambah kiraan bil $5.
-
Jika pelanggan membayar dengan bil $10: Kami perlu mengembalikan satu bil $5 sebagai perubahan, jadi kami mengurangkan kiraan bil $5 dan menambah kiraan bil $10. Jika kami tidak mempunyai sebarang bil $5, pulangkan palsu.
-
Jika pelanggan membayar dengan bil $20: Kami mengutamakan pemberian satu bil $10 dan satu bil $5 sebagai perubahan. Jika itu tidak mungkin, kami cuba memberikan tiga bil $5. Jika tiada pilihan tersedia, kembalikan palsu.
Semakan Akhir: Jika kami berjaya memproses semua pelanggan tanpa kehabisan perubahan, kembalikan benar.
Kes Tepi:
- Fungsi ini harus mengendalikan senario yang mustahil untuk memberikan perubahan yang betul, seperti apabila anda menerima bil $10 atau $20 terlalu awal tanpa mempunyai bil (s) $5 yang diperlukan.
- Ia harus mengendalikan saiz input yang besar dengan cekap kerana kekangan (sehingga 100,000 pelanggan). Penyelesaian berjalan dalam kerumitan masa O(n), menjadikannya optimum untuk masalah ini.
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci . Perubahan Lemonade. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan: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