Longest Sub-Array with Sum K Java
- Get link
- X
- Other Apps
PROGRAM TO FIND THE LONGEST SUB-ARRAY SUM K
import
java.io.*;
import
java.util.*;
class
MAIN {
// function to find the length of longest
// subarray having sum k
static
int
lenOfLongSubarr(
int
[] arr,
int
n,
int
k)
{
// HashMap to store (sum, index) tuples
HashMap<Integer, Integer> map =
new
HashMap<>();
int
sum =
0
, maxLen =
0
;
// traverse the given array
for
(
int
i =
0
; i < n; i++) {
// accumulate sum
sum += arr[i];
// when subarray starts from index '0'
if
(sum == k)
maxLen = i +
1
;
// make an entry for 'sum' if it is
// not present in 'map'
if
(!map.containsKey(sum)) {
map.put(sum, i);
}
// check if 'sum-k' is present in 'map'
// or not
if
(map.containsKey(sum - k)) {
// update maxLength
if
(maxLen < (i - map.get(sum - k)))
maxLen = i - map.get(sum - k);
}
}
return
maxLen;
}
// Driver code
public
static
void
main(String args[])
{
int
[] arr = {
10
,
5
,
2
,
7
,
1
,
9
};
int
n = arr.length;
int
k =
15
;
System.out.println(
"Length = "
+
lenOfLongSubarr(arr, n, k));
}
}
OUTPUT:
Length = 4
- Get link
- X
- Other Apps
Comments
Post a Comment