logo

Lộ trình

Khóa học

Tài liệu

Mock Interview

Liên hệ

Quay lại
  • Trang chủ

    /

  • Tài liệu

    /

  • Sliding Window
Tài liệu

Sliding Window

roninengineer88

1 Tháng 9 2024

<h1 id="0-gi%E1%BB%9Bi-thi%E1%BB%87u-v%E1%BA%A5n-%C4%91%E1%BB%81-ch%E1%BA%A3-hi%E1%BB%83u-l%C3%A0m-h1-ki%E1%BB%83u-g%C3%AC">0. Giới thiệu vấn đề chả hiểu làm h1 kiểu gì</h1><p>Hãy bắt đầu với một vấn đề cụ thể để bạn dễ dàng hình dung kỹ thuật Sliding Window.v</p><p>df</p><p>v</p><p>dfv</p><p>df</p><p></p><p>fd</p><p>vfd</p><p>v</p><p>dfv</p><p>dfv</p><p>dfv</p><p>df</p><p>vfdvfdvfdvfdvdfv</p><p>dfv</p><p>dfv</p><h2 id="v%E1%BA%A5n-%C4%91%E1%BB%81-c%E1%BA%A7n-gi%E1%BA%A3i-quy%E1%BA%BFt">Vấn đề cần giải quyết</h2><p>Giả sử bạn có một mảng kích thước <strong>N</strong> và cần tìm tổng lớn nhất của một <strong>subarray</strong> có kích thước chính xác là <strong>K</strong>.vfd</p><p>v</p><p>fd</p><p>vfd</p><p>v</p><p>df</p><p>v</p><p>fdv</p><p>fdv</p><p>df</p><p>vdf</p><p>v</p><p>dfv</p><p>fd</p><p>v</p><p>dfv</p><p>dfv</p><p>df</p><p>vdf</p><p>vdfv</p><h3 id="c%C3%A1ch-ti%E1%BA%BFp-c%E1%BA%ADn-%C4%91%C6%A1n-gi%E1%BA%A3n">Cách tiếp cận đơn giản</h3><p>Chúng ta có thể dùng 2 vòng lặp để lấy ra các <strong>subarray</strong>&nbsp;sau và so sánh tổng của các <strong>subarray&nbsp;:</strong> Dẫn đến Time Complexity là <strong>$O(N^2)$ ❌</strong></p><p>vfd</p><p>v</p><p>df</p><p>v</p><p>dfv</p><p>df</p><p>v</p><p>dfv</p><p>dfv</p><p>df</p><p>v</p><p>df</p><p>vfd</p><p>vvfdWe <code>content</code> haha</p><pre><code class="language-C++">int maxSumSubarray(int arr[], int n, int k) {int maxSumSubarray(int arr[], int n, int k) { int maxSum = INT_MIN; for (int i = 0; i &lt;= n - k; i++) { int sum = 0; for (int j = i; j &lt; i + k; j++) { sum += arr[j]; } maxSum = max(maxSum, sum); } return maxSum; }</code></pre><pre><code class="language-C++">Phan 2: int maxSumSubarray(int arr[], int n, int k) {int maxSumSubarray(int arr[], int n, int k) { int maxSum = INT_MIN; for (int i = 0; i &lt;= n - k; i++) { int sum = 0; for (int j = i; j &lt; i + k; j++) { sum += arr[j]; } maxSum = max(maxSum, sum); } return maxSum; }</code></pre><pre><code class="language-C++">Phan 3:int maxSumSubarray(int arr[], int n, int k) {int maxSumSubarray(int arr[], int n, int k) { Thân đẹp xza ahahihi int maxSum = INT_MIN; for (int i = 0; i &lt;= n - k; i++) { int sum = 0; for (int j = i; j &lt; i + k; j++) { sum += arr[j]; } maxSum = max(maxSum, sum); } return maxSum; }</code></pre>

0. Giới thiệu vấn đề chả hiểu làm h1 kiểu gì

Hãy bắt đầu với một vấn đề cụ thể để bạn dễ dàng hình dung kỹ thuật Sliding Window.v

df

v

dfv

df

fd

vfd

v

dfv

dfv

dfv

df

vfdvfdvfdvfdvdfv

dfv

dfv

Vấn đề cần giải quyết

Giả sử bạn có một mảng kích thước N và cần tìm tổng lớn nhất của một subarray có kích thước chính xác là K.vfd

v

fd

vfd

v

df

v

fdv

fdv

df

vdf

v

dfv

fd

v

dfv

dfv

df

vdf

vdfv

Cách tiếp cận đơn giản

Chúng ta có thể dùng 2 vòng lặp để lấy ra các subarray sau và so sánh tổng của các subarray : Dẫn đến Time Complexity là $O(N^2)$ ❌

vfd

v

df

v

dfv

df

v

dfv

dfv

df

v

df

vfd

vvfdWe content haha

int maxSumSubarray(int arr[], int n, int k) {int maxSumSubarray(int arr[], int n, int k) {
    int maxSum = INT_MIN;
    for (int i = 0; i <= n - k; i++) {
        int sum = 0;
        for (int j = i; j < i + k; j++) {
            sum += arr[j];
        }
        maxSum = max(maxSum, sum);
    }
    return maxSum;
}
Phan 2: int maxSumSubarray(int arr[], int n, int k) {int maxSumSubarray(int arr[], int n, int k) {
    int maxSum = INT_MIN;
    for (int i = 0; i <= n - k; i++) {
        int sum = 0;
        for (int j = i; j < i + k; j++) {
            sum += arr[j];
        }
        maxSum = max(maxSum, sum);
    }
    return maxSum;
}
Phan 3:int maxSumSubarray(int arr[], int n, int k) {int maxSumSubarray(int arr[], int n, int k) {
Thân đẹp xza ahahihi

    int maxSum = INT_MIN;
    for (int i = 0; i <= n - k; i++) {
        int sum = 0;
        for (int j = i; j < i + k; j++) {
            sum += arr[j];
        }
        maxSum = max(maxSum, sum);
    }
    return maxSum;
}
Database
beginner

Bài viết liên quan

Chưa nghĩ ra tiếp hehe

Cái này để test nổi bật

Test post 1

Chưa biết viết những gì hehe

Test mục lục

Đây là H2 dsadasdas dá d ád ád á Đây là H3

Java Concurrency Phần 1: Thread

by Chien @ Ronin Engineer 1. Giới thiệu Lập trình đồng thời (concurrency) trong Java đề cập đến khả năng của một chương trình Java thực thi nhiều tác vụ đồng thời hoặc song song, tận dụng tối đa các bộ xử lý (CPU) đa lõi (core) hiện đại. Khi các ứng dụng ngày càng trở nên phức tạp và đòi hỏi hiệu suất cao hơn, lập trình đồng thời trở thành yếu tố thiết yếu để cải thiện hiệu năng, khả năng phản hồi và khả năng mở rộng. Java cung cấp một bộ công cụ và các thư viện phong phú giúp các nhà phát t

Ngôn ngữ C++ là gì? Học C++ bạn có thể làm được gì? Đây là những câu hỏi rất cơ bản và có thể nhiều bạn đã biết câu trả lời. Nhưng liệu bạn đã thực sự hiểu được bản chất của vấn đề ở đây? Bằng việc có câu trả lời cho các câu hỏi này,

1. Ngôn ngữ C++ là gì? Ngôn ngữ lập trình C++ là một ngôn ngữ lập trình hướng đối tượng(OOP – Object-oriented programming) được phát triển bởi Bjarne Stroustrup. C++ là ngôn ngữ lập trình được phát triển trên nên tảng của ngôn ngữ lập trình C. Do đó, C++ có song song cả 2

Tất cả bài viết
logo

HỘ KINH DOANH LẬP VƯƠNG

Giấy chứng nhận đăng ký doanh nghiệp số: 8656162915-001. Cấp ngày 21/02/2024. Nơi cấp: Sở Kế hoạch và Đầu tư TP. Hà Nội

PHƯƠNG THỨC THANH TOÁN

vnpay

LIÊN HỆ

roninengineer88@gmail.com

0362228388

26 ngõ 156 Hồng Mai, Hai Bà Trưng, Hà Nội

THEO DÕI CHÚNG TÔI

Facebook

Youtube

Tiktok

CHÍNH SÁCH

Chính sách bảo mật

Chính sách thanh toán

Đổi trả/Hoàn tiền

Hướng dẫn thanh toán VNPAY

PHƯƠNG THỨC THANH TOÁN

vnpay

Ronin Engineer 2024