LeetCode Note Java 00121:Best Time to Buy and Sell Stock
回傳最高收益。
題目
Best Time to Buy and Sell Stock Easy
You are given an array prices where prices[i] is the price of a given stock on the ith day.
You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.
Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.
我的解法
想法
計算每個 price 買進後可能的最高收益來更新最佳收益:
1 | class Solution { |
O(n*n) 最暴力的雙層迴圈果然超時了。
想法 2
只能跑一圈的話就必須好好設計變數,記錄當前可能的最低買進價錢跟最高收益。
1 | class Solution { |
重點
- 最後的
最高收益
不一定是由最後的最低買進價位
得出。
重點物件或方法
Integer.MAX_VALUE
檢討
網路上有著各式方法,只好見一套學一套。
Sliding Window:
1 | class Solution { |
重點:
其實概念跟前面的 想法 2 一樣,只是寫法不同。
Sliding Window 是這種解題技巧的名稱,可以減少暴力法中的重複計算。
參考資料
neetcode-gh/leetcode/blob/main/java/121-Best-Time-to-Buy-and-Sell-Stock.java
演算法筆記系列 — Two Pointer 與Sliding Window
Leetcode 刷題 pattern - Sliding Window