일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- C++
- leetcode
- Python
- TypeScript
- nginx
- npm
- property
- AI
- bash
- dotenv
- BOJ
- vuetify
- var
- machine learning
- docker
- security
- webpack
- scss
- vue.js
- 보안
- type
- 앙상블
- JavaScript
- C#
- loop
- Clone
- VUE
- generic
- git
- condition
Archives
- Today
- Total
ice rabbit programming
[LeetCode] Best Time to Buy and Sell Stock 본문
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
주어진 배열에서 value 차가 가장 큰 경우를 구하는데, 뺄 때 큰 수는 index가 작은 수보다 뒤여야 한다.
처음에는 단순히 2중 선형 탐색으로 풀까 하다가, 조금 빠른 방법이 없을까 하여 value 및 index 기준으로 정렬한 후에 탐색을 돌리고 탈출하는 로직을 생각했다.
다만, 처음 생각보다 많이 빨라지지는 않아, C#으로 현재값/현재까지최소값/이득 으로 나누어 푸는 풀이로도 풀어보았다.
struct muzi {
int value;
int index;
};
bool cmpValue(struct muzi source, struct muzi compare) {
if(source.value>compare.value)
return true;
else if(source.value==compare.value && source.index>compare.index)
return true;
else
return false;
}
class Solution {
public:
int maxProfit(vector<int>& prices) {
int result=0;
int size = prices.size();
if(size<1)
return 0;
vector<muzi> sortedPrices(size);
for(int i=0;i<size;i++) {
muzi temp;
temp.value=prices[i];
temp.index=i;
sortedPrices[i]=temp;
}
sort(sortedPrices.begin(),sortedPrices.end(),cmpValue);
for(int i=size-1;i>0;i--) {
muzi source = sortedPrices[i];
if(i<size-1&&(source.index>sortedPrices[i+1].index))
continue;
for(int j=0;j<i;j++) {
if(sortedPrices[j].value==0)
continue;
if(source.index<sortedPrices[j].index && result < sortedPrices[j].value-source.value) {
result=sortedPrices[j].value-source.value;
}
}
}
return result;
}
};
해도해도 잘 풀기는 어려운 것 같다.
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] Maximum Depth of Binary Tree (feat. 고정관념?) (0) | 2020.04.20 |
---|---|
[LeetCode] Minimum Depth of Binary Tree (0) | 2020.04.20 |
[LeetCode] Two Sum II - Input array is sorted (0) | 2020.04.18 |
[LeetCode] Linked List Cycle (0) | 2020.04.16 |
[LeetCode] Remove Duplicates From Sorted List (0) | 2020.04.15 |