Rumah >Java >javaTutorial >Leetcode — Temuduga Teratas –. Masa Terbaik untuk Membeli dan Menjual Saham
Masalah yang mudah dengan perihalannya ialah:
Anda diberi harga tatasusunan di mana harga[i] ialah harga saham tertentu pada hari ke-1.
Anda mahu memaksimumkan keuntungan anda dengan memilih satu hari untuk membeli satu saham dan memilih hari lain pada masa hadapan untuk menjual saham tersebut.
Pulangan keuntungan maksimum yang boleh anda capai daripada transaksi ini. Jika anda tidak dapat mencapai sebarang keuntungan, pulangkan 0.Contoh 1:
Input: harga = [7,1,5,3,6,4]
Keluaran: 5Penjelasan: Beli pada hari ke-2 (harga = 1) dan jual pada hari ke-5 (harga = 6), untung = 6-1 = 5.
Ambil perhatian bahawa membeli pada hari ke-2 dan menjual pada hari pertama adalah tidak dibenarkan kerana anda mesti membeli sebelum anda menjual.Contoh 2:
Input: harga = [7,6,4,3,1]
Output: 0Penjelasan: Dalam kes ini, tiada transaksi dilakukan dan keuntungan maksimum = 0.
Kekangan:
1 <= harga.panjang <= 105
0 <= harga[i] <= 104
Pada mulanya anda akan berfikir tentang mengisih dan mendapatkan nombor yang lebih kecil dan lebih besar, tetapi boleh jadi daripada tatasusunan anda mungkin mendapat julat atau nombor yang berbeza sebelum dan selepas itu akan menyebabkan perbezaan tidak sepadan dengan apa yang dijangkakan, jadi lupakan untuk mengisih.
Cara yang baik untuk menyelesaikan dalam kes ini ialah mempertimbangkan min dan maks serta perbezaan semasa mengulang tatasusunan. Jika minimum kurang daripada jangkaan, tetapkan semula segala-galanya, jika tidak, teruskan dan kemas kini maks apabila kurang daripada maks, dan sentiasa mendapat perbezaan, bukan hanya maks, jika tidak, anda mungkin gagal apabila kami mendapat kurang minimum, tetapi bukan nombor maks yang besar .
class Solution { public int maxProfit(int[] prices) { int min = prices[0]; int max = prices[0]; int diff = 0; for(int i=1;iprices[i]){ min = prices[i]; max = prices[i]; } else if (max < prices[i]) { max = prices[i]; } if(diff < (max - min)) { diff = max - min; } } return diff; } } Masa Jalan: 2 ms, lebih pantas daripada 77.66% penyerahan dalam talian Java untuk Masa Terbaik untuk Membeli dan Menjual Saham.
Penggunaan Memori: 61.4 MB, kurang daripada 80.34% penyerahan dalam talian Java untuk Masa Terbaik untuk Membeli dan Menjual Saham.
Anda masih boleh menambah baik lagi mengalih keluar min dan hanya menggunakan maks, tetapi perbezaannya bukanlah masalah besar, tetapi bagaimanapun ialah peningkatan prestasi.
—
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 –. Masa Terbaik untuk Membeli dan Menjual Saham. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!