Algorithm Steps
- Given an array
arr
and a target sumk
. - Initialize variables:
start = 0
,curr_sum = 0
, andmax_len = 0
. - Traverse the array using a loop with index
end
: - → Add
arr[end]
tocurr_sum
. - → While
curr_sum > k
, subtractarr[start]
fromcurr_sum
and incrementstart
. - → If
curr_sum == k
, updatemax_len
asmax(max_len, end - start + 1)
. - Return
max_len
as the result after the loop.
Find Longest Subarray with Given Sum (Positive Numbers) Code
Python
JavaScript
Java
C++
C
def longest_subarray_sum_k(arr, k):
start = 0
curr_sum = 0
max_len = 0
for end in range(len(arr)):
curr_sum += arr[end]
while curr_sum > k:
curr_sum -= arr[start]
start += 1
if curr_sum == k:
max_len = max(max_len, end - start + 1)
return max_len
# Sample Input
arr = [1, 2, 3, 1, 1, 1, 1, 2]
k = 5
print("Longest Subarray Length:", longest_subarray_sum_k(arr, k))