Arrays are the foundation of data structures. Mastering them unlocks many advanced topics like sorting, searching, and dynamic programming.
1๏ธโฃ What is an Array?
An array is a collection of elements stored at contiguous memory locations. All elements are of the same data type.
Python Example:
arr = [10, 20, 30, 40]C++ Example:
print(arr[2]) # Output: 30
int arr[] = {10, 20, 30, 40};
cout << arr[2]; // Output: 30
Java Example:int[] arr = {10, 20, 30, 40};
System.out.println(arr[2]); // Output: 30
2๏ธโฃ Basic Array Operations:โข Insert
โข Delete
โข Traverse
โข Search
โข Update
Python โ Traversal:
for i in arr:C++ โ Search:
print(i)
for (int i = 0; i < n; i++) {
if (arr[i] == key) {
// Found
}
}
Java โ Update:arr[1] = 99; // Updates second element3๏ธโฃ Sliding Window Technique ๐ช
Used to reduce time complexity in problems involving subarrays or substrings.
โถ๏ธ Fixed-size window:
Find max sum of subarray of size k
โถ๏ธ Variable-size window:
Find longest substring with unique characters
4๏ธโฃ Sliding Window โ Max Sum Subarray (Size k)
Python:
def max_sum(arr, k):5๏ธโฃ Practice Tasks:
window_sum = sum(arr[:k])
max_sum = window_sum
for i in range(k, len(arr)):
window_sum += arr[i] - arr[i - k]
max_sum = max(max_sum, window_sum)
return max_sum
print(max_sum([1, 4, 2, 10, 2, 3], 3)) # Output: 16
โ Find the second largest element in an array
โ Implement sliding window to find max sum subarray
โ Try variable-size window: longest substring without repeating characters
๐ Solution for Practice Tasks
โ 1. Find the Second Largest Element in an Array
Python:
def second_largest(arr):โ 2. Max Sum Subarray (Fixed-size Sliding Window)
first = second = float('-inf')
for num in arr:
if num > first:
second = first
first = num
elif first > num > second:
second = num
return second if second != float('-inf') else None
print(second_largest([10, 20, 4, 45, 99])) # Output: 45
Python:
def max_sum(arr, k):โ 3. Longest Substring Without Repeating Characters (Variable-size Sliding Window)
window_sum = sum(arr[:k])
max_sum = window_sum
for i in range(k, len(arr)):
window_sum += arr[i] - arr[i - k]
max_sum = max(max_sum, window_sum)
return max_sum
print(max_sum([1, 4, 2, 10, 2, 3, 1, 0, 20], 4)) # Output: 24
Python:
def longest_unique_substring(s):Double Tap โฅ๏ธ For Part-4
seen = {}
left = max_len = 0
for right in range(len(s)):
if s[right] in seen and seen[s[right]] >= left:
left = seen[s[right]] + 1
seen[s[right]] = right
max_len = max(max_len, right - left + 1)
return max_len
print(longest_unique_substring("abcabcbb")) # Output: 3 ("abc")