(Leetcode) [Array]: Best time to buy and sell stock
Topic: Array
Difficulty: Easy
Vector์ ์ฃผ์ ๊ธ์ก์ด ๋ ์ง์์ผ๋ก ๋์ด๋์ด ์๋ค.
๊ฑฐ๋๋ฅผ ํด์ ๋ผ ์ ์๋ ๊ฐ์ฅ ํฐ ์ด์ต์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
By default, map is sorted in increasing order based on its key.
My first idea
- for loop์ ์ด์ฉํด์ ์ฒซ๋ฒ์งธ ์ซ์๋ถํฐ ๊ฐ ์ซ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋ค. max๋ผ๋ int variable์ ๋ง๋ ๋ค.
- ๊ธฐ์ค ์ซ์๋ณด๋ค ๋ค์ ์๋ ์ซ์๋ค์ค์ ์ต๋๊ฐ์ ์ฐพ๋๋ค.
- โ์ต๋๊ฐ-๊ธฐ์คโ์ด max๋ณด๋ค ์์ผ๋ฉด max = ์ต๋๊ฐ - ๊ธฐ์ค.
๊ฒฐ๊ณผ: time-limit exceeded.
My second idea
min_element
ํจ์๋ฅผ ์ด์ฉํด์ ์ ์ผ ์์ ์ซ์์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋๋ค.- ๊ทธ ์ธ๋ฑ์ค ์ดํ์ ์ซ์๋ค ์ค์์ ์ ์ ํฐ ์ซ์๋ฅผ ์ฐพ์์ ์ด์ต์ ์ฐพ๋๋ค.
๋ฌธ์ ์ : ์ด๋ ๊ฒ ์ฐพ์ ์ด์ต์ด ํญ์ ์ต๋๊ฐ์ด๋ผ๋ ๋ณด์ฅ์ ์๋ค. ๋ฌด์กฐ๊ฑด ์ต์๊ฐ์ผ๋ก ์ต๋ ์ด์ต์ ๋ด๋๊ฑด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
์๋๋ ์ฃ์ง ์ผ์ด์ค์ด๋ค.
Solution
class Solution {
public:
int maxProfit(vector<int>& prices) {
int minPrice = prices[0];
int maxProfit = 0;
for (int i=1; i<prices.size(); i++) {
if (minPrice > prices[i]) {
minPrice = prices[i];
}
else if (maxProfit < prices[i]-minPrice) {
maxProfit = prices[i]-minPrice;
}
}
return maxProfit;
}
};
๊ต์ฅํ ๊ฐ๋จํ ๋ฌธ์ ์๋ค,,
loop์ ํ ๋ฒ๋ง ๋๊ณ ๋ ์ฐพ์ ์ ์์๋ค.
์ผ๋จ 2๊ฐ์ ๋ณ์, minPrice์ maxProfit์ ๋ง๋ ๋ค.
loop์ ๋๋ฉด์ minPrice์ maxProfit์ ๋์์ ์
๋ฐ์ดํธ ํด์ฃผ๋ฉด ๋๋ค.
minPrice๋ return๋์ง ์๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ๋น๊ต ์ฉ๋๋ก๋ง ์ฌ์ฉ๋ ์ ์๋ค.
์์ง ๋ ๊ฐ ๊ธธ์ด ๋ฉ์๋ค.
Leave a comment