Tìm Mảng Con Có Tổng Lớn Nhất

     

Câu hỏi bỏng vấn kiến tạo hệ thống rất có thể quá mở, đến nỗi quá cạnh tranh để biết cách chuẩn bị phù hợp. Hiện thời tôi bao gồm thể unlock các vòng xây cất của Amazon, Microsoft và Adobe sau thời điểm mua cuốn sách này. Sửa đổi từng ngày một câu hỏi thiết kế và tôi hứa chúng ta cũng có thể bẻ khóa thiết kế.

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


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

Chúng ta bắt buộc tìm tổng của một mảng con 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 phương pháp sử dụngThuật toán Kadanemà là 1 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 bé 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 độ phức hợp cho mảng con liền kề tổng lớn nhấtCách tiếp cận 2 mang đến Mảng nhỏ 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ốPhân tích độ tinh noithatthoidai.vn cho mảng nhỏ liền kề tổng khủng nhất

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

Dòng thứ nhất chứa một cực hiếm nguyên N.

Dòng thiết bị hai chứa một mảng có kích cỡ N hoặc cái thứ hai cất N số nguyên.

Định dạng đầu ra

In một quý giá số nguyên duy nhất thể hiện tổng lớn nhất của mảng bé liền kề.

Những ràng buộc

1 -10 ^ 9

Cách tiếp cận 1 đến Mảng bé liền kề bao gồm tổng lớn nhất bằng phương pháp sử dụng Thuật toán Kadane

Bạn bao gồm một mảng số. Các số rất có thể là số dương cùng số âm và theo thứ tự ngẫu nhiên. Các bạn phải chỉ dẫn một tập thích hợp các bộ phận liên tục từ một mảng tất cả tổng là mập nhất. Ví dụ: nếu như 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ẽ áp dụng một thiết kế năng hễ tiếp cận. Nó còn gọi là thuật toán Kadane. Quanh đó ra, cửa hàng chúng tôi sẽ in mảng nhỏ với tổng bự nhất.

*

Thuật toán mang đến mảng bé liền kề gồm tổng phệ nhất

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

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

3. Đối với tôi trong phạm noithatthoidai.vn từ 0 đến 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: Một Với Một Là Hai Hai Thêm Hai Là Bốn ? Một Với Một Là Hai Hai Thêm Hai Là Bốn

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 độ tinh noithatthoidai.vn cho mảng bé liền kề tổng to 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ửa hàng chúng tôi chỉ phê chuẩn qua mảng và update giá trị của những biến với in câu vấn đáp cuối cùng.

Không gian phức tạp

O (1) cũng chính vì chúng tôi ko sử dụng ngẫu nhiên không gian hỗ trợ nào ở đây. Shop chúng tôi chỉ tàng trữ tổng bây giờ và tổng lớn nhất trong nhì biến.

Cách tiếp cận 2 mang lại Mảng con liền kề tất cả tổng số tiền khủng nhất bằng phương pháp sử dụng Mảng tổng chi phí tố

Đơn giản chỉ noithatthoidai.vnệc sử dụng Brute Force bằng phương pháp lấy toàn bộ các tổng của mảng con và tra cứu số tiền tối đa trong những đó.

Thuật toán cho mảng nhỏ liền kề bao gồm tổng mập nhất

1. Tính toán mảng tổng tiền tố-

Đối với tôi trong phạm noithatthoidai.vn tự 0 đến 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ới j trong những số đó i đổi khác từ 0 cho N-2 cùng j đổi khác từ i cho 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 vươn lên là tổng.

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

Vào cuối khi chúng ta tính toán toàn bộ N * (N + 1) / 2 mảng con, chúng ta nhận giá tốt trị to 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 độ tinh noithatthoidai.vn cho mảng bé liền kề tổng bự nhất

Thời gian phức tạpO (N * N) trong đó N là kích thước của mảng. Ở đây chúng tôi tìm tổng của tất cả các mảng con và lưu trữ tối đa của chúng. Để tìm kiếm tổng của mỗi mảng con, họ cần áp 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 tiền tố để lưu trữ tổng và bằng phương pháp sử dụng mảng này, cửa hàng chúng tôi tìm thấy tổng của một mảng nhỏ chỉ trong O (1) thời gian.

Xem thêm: Unit 4 Lớp 9: Write ) Trang 37 Sách Giáo Khoa Tiếng Anh 9, Unit 4 Lớp 9: Write

Subarray với tổng tối đa là một trong 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 những cuộc phỏng vấn kỹ thuật. Cố gắng thực hành và giải thích logic của thuật toán Kadane khi chúng ta yêu cầu các bạn giải thích.