Skip to content

Commit d1641fa

Browse files
committed
array problems
1 parent 7967cf7 commit d1641fa

File tree

3 files changed

+129
-0
lines changed

3 files changed

+129
-0
lines changed

Arrays/largest_subarray_0_sum.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Problem source: https://practice.geeksforgeeks.org/problems/largest-subarray-with-0-sum/1
2+
# Max sub array with 0 sum
3+
4+
class Solution:
5+
def maxLen(self, n, arr):
6+
sum_dict = {-1: 0}
7+
pre_sum = 0
8+
max_arr_len = 0
9+
for idx, el in enumerate(arr):
10+
pre_sum += el
11+
if pre_sum in sum_dict:
12+
max_arr_len = max(max_arr_len, idx - sum_dict[pre_sum])
13+
else:
14+
sum_dict[pre_sum] = idx
15+
return max_arr_len
16+
17+
18+
# {
19+
# Driver Code Starts
20+
if __name__ == '__main__':
21+
t = int(input())
22+
for i in range(t):
23+
n = int(input())
24+
arr = list(map(int, input().strip().split()))
25+
ob = Solution()
26+
print(ob.maxLen(n, arr))

Arrays/subarray_sum.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class Solution:
2+
def subArraySum(self, arr, n, s):
3+
sum_dict = {}
4+
pre_sum = 0
5+
for id_i in range(n):
6+
pre_sum += arr[id_i]
7+
if pre_sum > s:
8+
k = pre_sum - s
9+
idx = sum_dict.get(k)
10+
if idx:
11+
return [idx+1, id_i+1]
12+
elif pre_sum == s:
13+
return [1, id_i+1]
14+
sum_dict[pre_sum] = id_i+1
15+
return [-1]
16+
17+
18+
# {
19+
# Driver Code Starts
20+
# Initial Template for Python 3
21+
22+
import math
23+
24+
25+
def main():
26+
T = int(input())
27+
while (T > 0):
28+
29+
NS = input().strip().split()
30+
N = int(NS[0])
31+
S = int(NS[1])
32+
33+
A = list(map(int, input().split()))
34+
ob = Solution()
35+
ans = ob.subArraySum(A, N, S)
36+
37+
for i in ans:
38+
print(i, end=" ")
39+
40+
print()
41+
42+
T -= 1
43+
44+
45+
if __name__ == "__main__":
46+
main()

Arrays/zigzag_array.py

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Problem: convert array into zig-zag fashion
2+
# https://practice.geeksforgeeks.org/problems/convert-array-into-zig-zag-fashion1638/1
3+
4+
class Solution:
5+
# Program for zig-zag conversion of array
6+
def zigZag(self, arr, n):
7+
8+
flag = False
9+
i = 0
10+
while i < n - 1:
11+
if not flag and arr[i] > arr[i + 1]:
12+
arr[i], arr[i + 1] = arr[i + 1], arr[i]
13+
elif flag and arr[i] < arr[i + 1]:
14+
arr[i], arr[i + 1] = arr[i + 1], arr[i]
15+
16+
flag = not flag
17+
i = i + 1
18+
19+
20+
# {
21+
# Driver Code Starts
22+
# Initial Template for Python 3
23+
24+
import sys
25+
26+
27+
def isZigzag(arr, n):
28+
f = 1
29+
30+
for i in range(1, n):
31+
if f:
32+
if arr[i - 1] > arr[i]:
33+
return 0
34+
else:
35+
if arr[i - 1] < arr[i]:
36+
return 0
37+
f = f ^ 1
38+
39+
return 1
40+
41+
42+
t = int(input())
43+
while t:
44+
n = int(input())
45+
arr = [int(x) for x in input().split()]
46+
ob = Solution()
47+
ob.zigZag(arr, n)
48+
check = isZigzag(arr, n)
49+
50+
if check:
51+
print("1")
52+
else:
53+
print("0")
54+
55+
t -= 1
56+
57+
sys.exit(0)

0 commit comments

Comments
 (0)