Python Hard Array
Python Hard Array
def generate_pascals_triangle(n):
triangle = []
for i in range(n):
row = [1]*(i+1)
triangle.append(row)
return triangle
# Example usage:
n=5
triangle = generate_pascals_triangle(n)
print(row)
Output:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
if not nums:
return []
count1 = count2 = 0
count1 += 1
count2 += 1
elif count1 == 0:
elif count2 == 0:
else:
count1 -= 1
count2 -= 1
result = []
result.append(candidate)
return result
# Example usage:
nums = [1, 2, 2, 3, 2]
print(majority_element(nums))
Output:
[2]
3-Sum Problem
def three_sum(nums):
nums.sort()
res = []
for i in range(len(nums)-2):
continue
l, r = i+1, len(nums)-1
while l < r:
if s < 0:
l += 1
elif s > 0:
r -= 1
else:
l += 1
r -= 1
l += 1
r -= 1
return res
# Example usage:
print(three_sum(nums))
Output:
4-Sum Problem
def four_sum(nums, target):
nums.sort()
res = []
n = len(nums)
for i in range(n-3):
continue
l, r = j+1, n-1
while l < r:
if s < target:
l += 1
r -= 1
else:
l += 1
r -= 1
l += 1
r -= 1
return res
# Example usage:
target = 0
print(four_sum(nums, target))
Output:
max_len = 0
curr_sum = 0
for i in range(len(arr)):
curr_sum += arr[i]
if curr_sum == 0:
max_len = i + 1
else:
sum_dict[curr_sum] = i
return max_len
# Example usage:
print(max_len_zero_sum_subarray(arr))
Output:
count = 0
xor = 0
freq = defaultdict(int)
xor ^= num
if xor == K:
count += 1
if xor ^ K in freq:
count += freq[xor ^ K]
freq[xor] += 1
return count
# Example usage:
arr = [4, 2, 2, 6, 4]
K=6
print(count_subarrays_with_xor(arr, K))
Output:
if not intervals:
return []
intervals.sort(key=lambda x: x[0])
merged = [intervals[0]]
prev = merged[-1]
else:
merged.append(current)
return merged
# Example usage:
intervals = [[1,3],[2,6],[8,10],[15,18]]
print(merge_intervals(intervals))
Output:
n, m = len(arr1), len(arr2)
for i in range(n):
first = arr2[0]
k=1
arr2[k-1] = arr2[k]
k += 1
arr2[k-1] = first
# Example usage:
merge(arr1, arr2)
Output:
n = len(arr)
repeating = missing = -1
for x in arr:
if arr[abs(x) - 1] < 0:
repeating = abs(x)
else:
arr[abs(x) - 1] *= -1
for i in range(n):
if arr[i] > 0:
missing = i + 1
break
# Example
arr = [3, 1, 3]
Count Inversions
def count_inversions(arr):
inv = 0
temp[k] = a[i]; i += 1
else:
temp[k] = a[j]
inv += mid - i
j += 1
k += 1
temp[k] = a[i]; i += 1; k += 1
temp[k] = a[j]; j += 1; k += 1
a[left:right] = temp[left:right]
return inv
if r - l <= 1: return 0
m = (l + r) // 2
return inv
# Example
arr = [4, 3, 2, 1]
print(count_inversions(arr))
Output:
Reverse Pairs
def reverse_pairs(nums):
if hi - lo <= 1:
return 0
j = mid
j += 1
inv += j - mid
nums[lo:hi] = sorted(nums[lo:hi])
return inv
# Example
nums = [1, 3, 2, 3, 1]
print(reverse_pairs(nums))
Output:
if num < 0:
return result
# Example
print(max_product_subarray(nums))
Output:
180