Tìm mảng con có tổng lớn nhất

     
Tcủa anh ấy là một trong những trong những thắc mắc được hỏi các nhất trong các cuộc bỏng vấn. Ở trên đây người phỏng vấn thích xem phương pháp tiếp cận thuật toán đường tính của bạn. Có, chúng ta cũng có thể tìm thấy tổng số về tối đa của các thành phần trong thời gian tuyến tính bằng cách sử dụng một con đường truyền mảng. Ở đây shop chúng tôi sẽ hiển thị tổng lớn số 1 của mảng con liền kề.

Bạn đang xem: Tìm mảng con có tổng lớn nhất

Chúng ta cần tìm tổng của một mảng bé liền kề trong một mảng số tất cả tổng lớn nhất. Điều này hoàn toàn có thể được giải quyết bằng cách sử dụngThuật toán Kadanemà là một trong những Lập trình năng động tiếp cận.


Mục lục


Cách tiếp cận 1 cho Mảng con liền kề có tổng lớn nhất bằng phương pháp sử dụng Thuật toán KadanePhân tích độ tinh giaimaivang.vn cho mảng bé liền kề tổng béo nhấtCách tiếp cận 2 mang lại Mảng nhỏ liền kề tất cả tổng số tiền lớn nhất bằng cách sử dụng Mảng tổng tiền tốPhân tích độ phức hợp cho mảng bé liền kề tổng to nhất

Định dạng đầu vào

Dòng trước tiên chứa một quý giá nguyên N.

Dòng trang bị hai đựng một mảng có kích thước N hoặc dòng thứ hai chứa N số nguyên.

Định dạng đầu ra

In một cực hiếm số nguyên duy nhất bộc lộ tổng lớn nhất của mảng nhỏ liền kề.

Những ràng buộc

1 -10 ^ 9

Cách tiếp cận 1 mang lại Mảng bé liền kề bao gồm tổng béo nhất bằng cách sử dụng Thuật toán Kadane

Bạn bao gồm một mảng số. Những số có thể là số dương cùng số âm cùng theo máy tự ngẫu nhiên. Chúng ta phải giới thiệu một tập hợp các phần tử liên tục xuất phát từ 1 mảng tất cả tổng là béo nhất. Ví dụ: nếu bạn có một mảng các số sau-

Đầu vào: -2, -3, 4, 1, -2, 1, 5, -3

Đầu ra: 9

Chúng tôi sẽ sử dụng một lập trình năng cồn tiếp cận. Nó có cách gọi khác là thuật toán Kadane. Không tính ra, shop chúng tôi sẽ in mảng nhỏ với tổng to nhất.

*

Thuật toán cho mảng nhỏ liền kề có tổng khủng nhất

1. Lấy đầu vào N và tiếp đến là một mảng a <> có size N.

2. đem hai đổi thay pres = a <0> và sum = a <0>.

3. Đối với tôi trong phạm giaimaivang.vn từ bỏ 0 cho N-1:

a. Trước = max (trước + a , a )

b. Sum = max (tổng, trước)

3. In tổng giá trị.

Xem thêm: Tên Tiếng Trung Hay Cho Nữ Trong Game ❤️️ 1001 Tên Đẹp, Tổng Hợp Cái Tên Game Tiếng Trung Hay Nhất

Chương trình C ++

#include using namespace std;int main() int n; cin>>n; long long int a; for(int i=0;i>a; long long int prev=a<0>,sum=a<0>; for(int i=0;i

Chương trình JAVA

import java.util.Arrays;import java.util.Scanner;public class Main public static void main(String<> args) int n; Scanner s = new Scanner(System.in); n = s.nextInt(); int a<> = new int; for(int i=0;imaxSum) maxSum=sum; System.out.println(maxSum); }8-2 -3 4 1 -2 1 5 -39

Phân tích độ phức hợp cho mảng nhỏ liền kề tổng bự nhất

Thời gian phức tạpO (N) với N là kích cỡ của mảng vẫn cho. Ở đây công ty chúng tôi chỉ phê duyệt qua mảng và update giá trị của những biến và in câu vấn đáp cuối cùng.

Không gian phức tạp

O (1) chính vì chúng tôi ko sử dụng ngẫu nhiên không gian hỗ trợ nào sinh hoạt đây. Chúng tôi chỉ tàng trữ tổng hiện tại và tổng lớn nhất trong nhì biến.

Cách tiếp cận 2 mang lại Mảng bé liền kề gồm tổng số tiền lớn nhất bằng cách sử dụng Mảng tổng tiền tố

Đơn giản chỉ cần sử dụng Brute Force bằng cách lấy tất cả các tổng của mảng bé và tra cứu số tiền buổi tối đa trong số đó.

Thuật toán đến mảng nhỏ liền kề tất cả tổng mập nhất

1. đo lường mảng tổng chi phí tố-

Đối cùng với tôi vào phạm giaimaivang.vn trường đoản cú 0 cho N-1:

nếu tôi == 0 thì:

presum = a

khác

presum = presum + a 2. Bây giờ, với mỗi i và j trong các số đó i biến đổi từ 0 mang lại N-2 với j chuyển đổi từ i đến N-1, tính tổng của mảng nhỏ dưới dạng presum -presum 3. Tàng trữ tổng lớn nhất của mảng bé trong biến chuyển tổng.

4. In câu trả lời cuối cùng.

Vào cuối khi bọn họ tính toán tất cả N * (N + 1) / 2 mảng con, bọn họ nhận giá tốt trị phệ nhất.

Chương trình C ++

#include using namespace std;int main() int n; cin>>n; long long int a; long long int presum; for(int i=0;i>a; if(i==0) presum=a; else presum=a+presum; long long int ans=0; for(int i=0;i8-10 5 6 3 -16 9 8 -1517

Phân tích độ phức tạp cho mảng bé liền kề tổng béo nhất

Thời gian phức tạpO (N * N) trong số đó N là form size của mảng. Ở đây shop chúng tôi tìm tổng của toàn bộ các mảng con và lưu trữ tối đa của chúng. Để tìm tổng của mỗi mảng con, họ cần sử dụng vòng lặp for lồng nhau dẫn mang lại độ phức hợp thời gian O (N * N).

Không gian phức tạp

TRÊN) cũng chính vì chúng tôi tạo một mảng tổng chi phí tố để tàng trữ tổng và bằng cách sử dụng mảng này, chúng tôi tìm thấy tổng của một mảng con chỉ vào O (1) thời gian.

Xem thêm: Review Ngày Em Đến Là Ngày Tuyết Tan, Ngày Em Đến Là Ngày Tuyết Tan Chương Mới Nhất

Subarray với tổng tối đa là một trong những trong những thắc mắc được hỏi những nhất ở những công ty dựa trên sản phẩm trong các cuộc phỏng vấn kỹ thuật. Nỗ lực thực hành và phân tích và lý giải logic của thuật toán Kadane khi bọn họ yêu cầu các bạn giải thích.