Chi phí của một cổ phiếu mỗi ngày được đưa ra trong một mảng, tìm lợi nhuận tối đa mà bạn có thể kiếm được bằng cách mua và bán trong những ngày đó. Ví dụ: nếu mảng đã cho là {100, 180, 260, 310, 40, 535, 695}, lợi nhuận tối đa có thể kiếm được khi mua vào ngày 0, bán vào ngày 3. Mua lại vào ngày thứ 4 và bán vào ngày thứ 6. Nếu mảng giá đã cho được sắp xếp theo thứ tự giảm dần, thì không thể kiếm được lợi nhuận nào cả
Khuyến khích. Vui lòng giải quyết nó trên “PRACTICE” trước khi chuyển sang giải pháp.
Cách tiếp cận ngây thơ. Một cách tiếp cận đơn giản là thử mua cổ phiếu và bán chúng mỗi ngày khi có lãi và tiếp tục cập nhật mức lợi nhuận tối đa cho đến thời điểm hiện tại.
Dưới đây là việc thực hiện các phương pháp trên
Python3
# Python3 implementation of the approach
# Function to return the maximum profit
# that can be made after buying and
# selling the given stocks
def
maxProfit[price, start, end]:
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 60
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 62
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 63
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 65
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______7
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 68
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 69
8651
8653_______0_______4
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 68
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 69
8658
# Python3 implementation of the approach
0
204_______2 # Python3 implementation of the approach
3# Python3 implementation of the approach
4 # Python3 implementation of the approach
5# Python3 implementation of the approach
6# Python3 implementation of the approach
7# Python3 implementation of the approach
8
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
# Function to return the maximum profit
0Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
# Function to return the maximum profit
2Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______204_______2
# Function to return the maximum profit
5# Python3 implementation of the approach
4 # Python3 implementation of the approach
5# Function to return the maximum profit
8# Function to return the maximum profit
9# Python3 implementation of the approach
7# that can be made after buying and
1# Function to return the maximum profit
9# Python3 implementation of the approach
7# Python3 implementation of the approach
8
# that can be made after buying and
5# that can be made after buying and
6
# that can be made after buying and
5# that can be made after buying and
8
# that can be made after buying and
5
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 62
# selling the given stocks
1# selling the given stocks
2
# selling the given stocks
2______207_______4
# selling the given stocks
2_______207_______6
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
# selling the given stocks
8# selling the given stocks
9 def
0# Function to return the maximum profit
9 def
2# selling the given stocks
9 # Python3 implementation of the approach
7def
5# Function to return the maximum profit
9 def
7# Function to return the maximum profit
9 # Python3 implementation of the approach
7_______209_______0
# selling the given stocks
2______209_______2
# selling the given stocks
2_______9_______3
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
maxProfit[price, start, end]:
6maxProfit[price, start, end]:
7
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 67
0
1
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 62
3Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
6
7
9_______0_______4
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 601_______0_______02
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 604
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 606
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 608
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 609
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 611
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 613
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 615
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 616
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 618_______0_______4
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 620
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 621
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 623_______0_______24_______0_______8
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 626
# selling the given stocks
9 # Python3 implementation of the approach
7Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 629
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 630
Đầu ra
865
Thời gian phức tạp. O[N2]
Không gian phụ trợ. Ô[1]
cách tiếp cận hiệu quả. Nếu chúng tôi chỉ được phép mua và bán một lần, thì chúng tôi có thể sử dụng thuật toán sau. Chênh lệch tối đa giữa hai phần tử. Ở đây chúng tôi được phép mua và bán nhiều lần.
Sau đây là thuật toán cho vấn đề này.
- Tìm cực tiểu cục bộ và lưu trữ nó dưới dạng chỉ mục bắt đầu. Nếu không tồn tại, trở lại
- Tìm cực đại cục bộ. và lưu trữ nó dưới dạng chỉ mục kết thúc. Nếu chúng ta đến cuối, hãy đặt kết thúc làm chỉ mục kết thúc
- Cập nhật giải pháp [Tăng số cặp mua-bán]
- Lặp lại các bước trên nếu chưa kết thúc
Python3
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 631
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 632
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 633
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 634
def
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 636
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 639
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 641
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 62
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 644
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
# Python3 implementation of the approach
7# Python3 implementation of the approach
8Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______7
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 653
# Python3 implementation of the approach
3_______0_______4
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 68
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 659
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 660_______207_______9
# Python3 implementation of the approach
7Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 663
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______66
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______68
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______70
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______72
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______59
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 675
# selling the given stocks
9 # Python3 implementation of the approach
7Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 678
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 679
# selling the given stocks
2_______0_______81# Function to return the maximum profit
9 # Python3 implementation of the approach
7
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 684
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 686
# that can be made after buying and
5# Python3 implementation of the approach
3# Function to return the maximum profit
9
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
# Python3 implementation of the approach
7Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______94
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______96
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______2
# Function to return the maximum profit
8Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 618
# selling the given stocks
9 # Python3 implementation of the approach
7# Python3 implementation of the approach
8# that can be made after buying and
5
86507
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______9_______10
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______9_______12
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
# Python3 implementation of the approach
3Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______204_______3
# Function to return the maximum profit
9Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
# Python3 implementation of the approach
7Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
86522
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
86524
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______9_______26
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______59
86529
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 679
86531_______9_______32
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
86534
# selling the given stocks
9 # Python3 implementation of the approach
786537
# that can be made after buying and
5# Python3 implementation of the approach
3# Function to return the maximum profit
9
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
# Python3 implementation of the approach
7# that can be made after buying and
5
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______9_______45
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______9_______47_______0_______4
# Python3 implementation of the approach
3_______207_______9 # Python3 implementation of the approach
7Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______23
86555
86556
86557
86558
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
# selling the given stocks
2_______9_______61
86562
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
1
86565
9
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 601
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 602
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 604
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 606
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
86575
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 609
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 611
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 613
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 615
86583
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 618
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 620
86587
86588
86589
86590
Đầu ra
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 6
Thời gian phức tạp. Vòng lặp bên ngoài chạy cho đến khi tôi trở thành n-1. Giá trị gia tăng của hai vòng bên trong của I trong mỗi lần lặp. Vì vậy, độ phức tạp thời gian tổng thể là O[n]
Không gian phụ trợ. O[1] vì sử dụng các biến không đổi
Phương pháp tiếp cận đỉnh thung lũng
Trong cách tiếp cận này, chúng ta chỉ cần tìm phần tử lớn hơn tiếp theo và trừ nó khỏi phần tử hiện tại để sự khác biệt tiếp tục tăng cho đến khi chúng ta đạt đến mức tối thiểu. Nếu dãy là dãy giảm thì lợi nhuận tối đa có thể là 0
Python3
86591
86592
def
86594_______9_______95
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
86531_______9_______98
86599_______208_______5
# selling the given stocks
9# Python3 implementation of the approach
0286599
7
8653_______0_______4
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 68
# Python3 implementation of the approach
2 # Python3 implementation of the approach
3# Python3 implementation of the approach
4 # Python3 implementation of the approach
5
86555
# Python3 implementation of the approach
7# Python3 implementation of the approach
16
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
# Python3 implementation of the approach
18Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66
# Python3 implementation of the approach
20Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 66_______0_______2
# Python3 implementation of the approach
23# selling the given stocks
9# Python3 implementation of the approach
7# Python3 implementation of the approach
26
# that can be made after buying and
5# Python3 implementation of the approach
28
# that can be made after buying and
5
8653
# Function to return the maximum profit
9Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
# Python3 implementation of the approach
33# selling the given stocks
9 # Python3 implementation of the approach
35# selling the given stocks
9# Python3 implementation of the approach
786583
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 67
8653
# Python3 implementation of the approach
42
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 62
3Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 64
6
7
86565
# Python3 implementation of the approach
52_______0_______4
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 601
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 602
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 604
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 606
Buy on day: 0 Sell on day: 3 Buy on day: 4 Sell on day: 603