In this blog, we will explore the problem of finding the maximum number of chunks into which an array can be divided so that when each chunk is sorted individually, the entire array becomes sorted. This problem is an interesting challenge that tests your understanding of array manipulation and sorting algorithms.

Problem Statement
Given an array arr
that is a permutation of [0, 1, 2, ..., arr.length - 1]
, we need to find the maximum number of chunks (partitions) that can be made so that sorting each chunk individually will result in the entire array being sorted.
Example
Consider the array arr = [1, 0, 2, 3, 4]
. The maximum number of chunks we can divide this array into is 4
. The chunks will be [1, 0], [2], [3], [4]
.
Approach
To solve this problem, we need to keep track of the maximum element encountered so far as we iterate through the array. Whenever the maximum element encountered so far is equal to the current index, we can form a chunk up to this point.
Java Solution
Here’s a Java implementation of the solution:
public class MaxChunksToMakeSorted {
public int maxChunksToSorted(int[] arr) {
int max = 0;
int chunks = 0;
for (int i = 0; i < arr.length; i++) {
max = Math.max(max, arr[i]);
if (max == i) {
chunks++;
}
}
return chunks;
}
public static void main(String[] args) {
MaxChunksToMakeSorted solution = new MaxChunksToMakeSorted();
int[] arr = {1, 0, 2, 3, 4};
System.out.println("Maximum number of chunks: " + solution.maxChunksToSorted(arr)); // Output: 4
}
}
Explanation
- Initialize Variables:
max
to store the maximum value encountered so far.chunks
to count the number of chunks.
- Iterate Through the Array:
- Update
max
to the maximum ofmax
andarr[i]
. - If
max
equals the current indexi
, increment thechunks
counter. This indicates that the array up to the current index can be considered a chunk.
- Update
- Return the Result:
- The final value of
chunks
will be the maximum number of chunks into which the array can be divided.
- The final value of

Conclusion
This approach efficiently solves the problem with a time complexity of O(n), where n is the length of the array. By keeping track of the maximum element encountered so far, we can determine the points at which we can safely form chunks. This problem highlights the importance of understanding array properties and manipulating indices to achieve the desired results.
Feel free to try out the code with different input arrays and observe how the chunks are formed. Happy coding!
Read More ….
Introduction to SQL Programming: A Beginner’s Guide – https://kamleshsingad.com/introduction-to-sql-programming-a-beginners-guide/
Top 10 SQL Programming Tips for Beginners – https://kamleshsingad.com/top-10-sql-programming-tips-for-beginners/
Understanding SQL Joins: A Comprehensive Guide – https://kamleshsingad.com/understanding-sql-joins-a-comprehensive-guide/