# Array Practice Programs ## 1. Array Sum aur Average ```java int[] arr = {10, 20, 30, 40, 50}; int sum = 0; for (int n : arr) sum += n; double avg = (double) sum / arr.length; System.out.println("Sum: " + sum + ", Avg: " + avg); ``` ## 2. Array Max aur Min ```java int[] arr = {3, 7, 1, 9, 4}; int max = arr[0], min = arr[0]; for (int n : arr) { if (n > max) max = n; if (n < min) min = n; } System.out.println("Max: " + max + ", Min: " + min); ``` ## 3. Array Reverse ```java int[] arr = {1, 2, 3, 4, 5}; int l = 0, r = arr.length - 1; while (l < r) { int t = arr[l]; arr[l] = arr[r]; arr[r] = t; l++; r--; } System.out.println(Arrays.toString(arr)); // [5, 4, 3, 2, 1] ``` ## 4. Linear Search ```java int linearSearch(int[] arr, int target) { for (int i = 0; i < arr.length; i++) if (arr[i] == target) return i; return -1; } ``` ## 5. Binary Search ```java int binarySearch(int[] arr, int target) { int lo = 0, hi = arr.length - 1; while (lo <= hi) { int mid = lo + (hi - lo) / 2; if (arr[mid] == target) return mid; if (arr[mid] < target) lo = mid + 1; else hi = mid - 1; } return -1; } ``` ## 6. Duplicates Remove karo ```java int[] arr = {1, 2, 2, 3, 3, 3, 4}; Set<Integer> set = new LinkedHashSet<>(); for (int n : arr) set.add(n); System.out.println(set); // [1, 2, 3, 4] ``` ## 7. Second Largest Element ```java int secondLargest(int[] arr) { int first = Integer.MIN_VALUE, second = Integer.MIN_VALUE; for (int n : arr) { if (n > first) { second = first; first = n; } else if (n > second && n != first) second = n; } return second; } ``` ## 8. Array Rotate Left by K ```java void rotateLeft(int[] arr, int k) { k = k % arr.length; reverse(arr, 0, k - 1); reverse(arr, k, arr.length - 1); reverse(arr, 0, arr.length - 1); } void reverse(int[] arr, int l, int r) { while (l < r) { int t = arr[l]; arr[l] = arr[r]; arr[r] = t; l++; r--; } } ``` ## 9. Count Occurrences ```java int[] arr = {1, 2, 3, 2, 1, 2, 4}; int target = 2, count = 0; for (int n : arr) if (n == target) count++; System.out.println(target + " ka count: " + count); // 3 ``` ## 10. Matrix Transpose ```java int[][] mat = {{1,2,3},{4,5,6},{7,8,9}}; int n = mat.length; for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) { int t = mat[i][j]; mat[i][j] = mat[j][i]; mat[j][i] = t; } ``` ## 11. Merge Two Sorted Arrays ```java int[] merge(int[] a, int[] b) { int[] res = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) res[k++] = a[i] <= b[j] ? a[i++] : b[j++]; while (i < a.length) res[k++] = a[i++]; while (j < b.length) res[k++] = b[j++]; return res; } ``` ## 12. Maximum Subarray Sum (Kadane's) ```java int maxSubarraySum(int[] arr) { int maxSum = arr[0], currSum = arr[0]; for (int i = 1; i < arr.length; i++) { currSum = Math.max(arr[i], currSum + arr[i]); maxSum = Math.max(maxSum, currSum); } return maxSum; } ```