Leetcode 주식 매매
2488 단어 Leetcode
만약 에 네가 배열 이 있다 고 가정 하면 그 중에서 i 번 째 요 소 는 특정한 주식 이 i 일 째 에 있 는 가격 이다.하나의 알고리즘 을 설계 하여 최대 의 이윤 을 구하 다.당신 은 최대 두 번 의 거래 를 할 수 있 습 니 다.주의: 여러 거래 를 동시에 할 수 없습니다.
예시 1
입력
복제 하 다.
[1,4,2]
출력
복제 하 다.
3
사고 1: 주식 의 매입 과 판매 가 교차 되 지 않 기 때문에 반드시 앞 뒤 두 부분 으로 나 누 어 구 매 하 는 것 이 두 단계 이다.
pre [i] 는 0 일부 터 i 일 까지 주식 이 얻 을 수 있 는 최대 차액 이윤.
post [i] 는 i 일부 터 마지막 날 까지 주식 이 얻 을 수 있 는 최대 차익 (역방향 계산 가능) 을 나타 낸다.
int maxProfit(vector& prices) {
if(prices.size()==0)
return 0;
int pre[100000];
int post[100000];
for(int i=0;i<100000;i++)
{
pre[i]=post[i]=0;
}
int min=prices[0];
for(int i=1;i=0;i--)
{
post[i]=max(post[i+1],max_-prices[i]);
if(prices[i]>max_)
max_=prices[i];//
}
int res=0;
for(int i=0;ires)
res=pre[i]+post[i];
}
return res;
}
사고방식 2: 네 개의 변수 기록 을 채택 하여 매입 판매 buy1 sell1 buy2 sell2
4. 567917. 당신 이 지금 가지 고 있 는 돈 이 0 이 라 고 가정 하 세 요
4. 567917. buy 1 은 첫날 부터 i 일 까지 살 수 있 는 최저 가격 (샀 기 때문에 빚 을 졌 기 때문에 마이너스 로 기록 하기 때문에 max), 4. 567918.
4. 567917. sell 1 은 첫날 부터 i 일 중 어느 날 까지 판매 하면 최대 얼 마 를 벌 수 있 는 지 기록 합 니 다
4. 567917. buy 2 와 sell 2 는 전제 조건 이 있 습 니 다. 당신 이 i 일 전에 첫 번 째 거래 를 했 는 지, 만약 에 진행 했다 면 첫 번 째 거래 의 이윤 으로 계산 하고 있 습 니 다. 그러면 당신 은 첫 번 째 거래 의 이윤 을 가지 고 계산 한 것 입 니 다. 그래서 다음 에 또 거래 를 했다 면 2 번 거래 의 최대 치 입 니 다
4. 567917. 만약 당신 이 i 일 전에 거래 를 하지 않 았 다 면 buy 1 과 buy 2 는 똑 같 습 니 다. sell 1 과 sell 2 는 똑 같 고 변화 가 없습니다
int maxProfit(vector& prices) {
// write code here
if(prices.size()==0)
return 0;
// buy1->sell1->buy2->sell2
int buy1=-10000;
int buy2=-10000;
int sell1=0;
int sell2=0;
//buy1->sell1 ->buy2 ->sell2 .
for(int i=0;i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode 문제풀이 노트 113.경로 총 II경로 총 II 제목 요구 사항 문제풀이 두 갈래 나무와 목표와 뿌리 노드에서 잎 노드까지의 모든 경로를 찾는 것은 목표와 같은 경로입니다. 설명: 잎 노드는 하위 노드가 없는 노드를 가리킨다. 예: 다음과 같은 두 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.