classSolution {
public:int longestSubarrayAtMostK(vector<int>& arr, int k) {
int n = arr.size(), ans =0;
for (int i =0; i < n; ++i) {
int sum =0;
for (int j = i; j < n; ++j) {
sum += arr[j];
if (sum <= k) ans = max(ans, j - i +1);
elsebreak;
}
}
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
funcLongestSubarrayAtMostK(arr []int, kint) int {
n, ans:= len(arr), 0fori:=0; i < n; i++ {
sum:=0forj:=i; j < n; j++ {
sum+=arr[j]
ifsum<=k {
ifj-i+1 > ans { ans = j-i+1 }
} else {
break }
}
}
returnans}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
classSolution {
publicintlongestSubarrayAtMostK(int[] arr, int k) {
int n = arr.length, ans = 0;
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = i; j < n; j++) {
sum += arr[j];
if (sum <= k) ans = Math.max(ans, j - i + 1);
elsebreak;
}
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
classSolution:
deflongest_subarray_at_most_k(self, arr: list[int], k: int) -> int:
n = len(arr)
ans =0for i in range(n):
s =0for j in range(i, n):
s += arr[j]
if s <= k:
ans = max(ans, j - i +1)
else:
breakreturn ans
classSolution {
public:int longestSubarrayAtMostK(vector<int>& arr, int k) {
int n = arr.size(), ans =0, sum =0, left =0;
for (int right =0; right < n; ++right) {
sum += arr[right];
while (sum > k && left <= right) {
sum -= arr[left++];
}
ans = max(ans, right - left +1);
}
return ans;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
funcLongestSubarrayAtMostK(arr []int, kint) int {
n, ans, sum, left:= len(arr), 0, 0, 0forright:=0; right < n; right++ {
sum+=arr[right]
forsum > k&&left<=right {
sum-=arr[left]
left++ }
ifright-left+1 > ans { ans = right-left+1 }
}
returnans}
1
2
3
4
5
6
7
8
9
10
11
12
13
classSolution {
publicintlongestSubarrayAtMostK(int[] arr, int k) {
int n = arr.length, ans = 0, sum = 0, left = 0;
for (int right = 0; right < n; right++) {
sum += arr[right];
while (sum > k && left <= right) {
sum -= arr[left++];
}
ans = Math.max(ans, right - left + 1);
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
classSolution:
deflongest_subarray_at_most_k(self, arr: list[int], k: int) -> int:
n = len(arr)
ans = s = left =0for right in range(n):
s += arr[right]
while s > k and left <= right:
s -= arr[left]
left +=1 ans = max(ans, right - left +1)
return ans