mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-04-21 21:27:36 +00:00
more arrays
This commit is contained in:
parent
31c424fc86
commit
42318bb38d
21
data_structures/arrays/array_leader.py
Normal file
21
data_structures/arrays/array_leader.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
"""
|
||||||
|
Given an array arr[] of size n, the task is to find all the Leaders in the array.
|
||||||
|
An element is a Leader if it is greater than all the elements to its right side.
|
||||||
|
|
||||||
|
Note: The rightmost element is always a leader.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def array_leader(arr):
|
||||||
|
leaders = []
|
||||||
|
for i in range(len(arr)):
|
||||||
|
for j in range(i+1, len(arr)):
|
||||||
|
if arr[i] < arr[j]:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
leaders.append(arr[i])
|
||||||
|
|
||||||
|
return " ".join(map(str, leaders))
|
||||||
|
|
||||||
|
|
||||||
|
# Test the function with the provided input
|
||||||
|
print(array_leader([16, 17, 4, 3, 5, 2])) # Expected output: 17 5 2
|
19
data_structures/arrays/max_product_subarray.py
Normal file
19
data_structures/arrays/max_product_subarray.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
"""
|
||||||
|
Given an integer array, the task is to find the maximum product of any subarray.
|
||||||
|
Input: arr[] = {-1, -3, -10, 0, 60}
|
||||||
|
Output: 60
|
||||||
|
Explanation: The subarray with maximum product is {60}.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def max_product(arr):
|
||||||
|
result = 0
|
||||||
|
|
||||||
|
for x in range(len(arr)):
|
||||||
|
current_product = 1
|
||||||
|
for y in range(x, len(arr)):
|
||||||
|
current_product *= arr[y]
|
||||||
|
result = max(result, current_product)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# Test the function with the provided input
|
||||||
|
print(max_product([-1, -3, -10, 0, 60])) # Expected output: 60
|
28
data_structures/arrays/max_subarray.py
Normal file
28
data_structures/arrays/max_subarray.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
"""
|
||||||
|
Input: arr[] = {2, 3, -8, 7, -1, 2, 3}
|
||||||
|
Output: 11
|
||||||
|
Explanation: The subarray {7, -1, 2, 3} has the largest sum 11.
|
||||||
|
|
||||||
|
Input: arr[] = {-2, -4}
|
||||||
|
Output: –2
|
||||||
|
Explanation: The subarray {-2} has the largest sum -2.
|
||||||
|
|
||||||
|
Input: arr[] = {5, 4, 1, 7, 8}
|
||||||
|
Output: 25
|
||||||
|
Explanation: The subarray {5, 4, 1, 7, 8} has the largest sum 25.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def max_subarray(arr):
|
||||||
|
result = arr[0]
|
||||||
|
|
||||||
|
for x in range(len(arr)):
|
||||||
|
current_sum = 0
|
||||||
|
for y in range(x, len(arr)):
|
||||||
|
current_sum += arr[y]
|
||||||
|
result = max(result, current_sum)
|
||||||
|
return result
|
||||||
|
|
||||||
|
# Test the function with the provided inputs
|
||||||
|
print(max_subarray([2, 3, -8, 7, -1, 2, 3])) # Expected output: 11
|
||||||
|
print(max_subarray([-2, -4])) # Expected output: -2
|
||||||
|
print(max_subarray([5, 4, 1, 7, 8])) # Expected output: 25
|
25
data_structures/arrays/missing_number.py
Normal file
25
data_structures/arrays/missing_number.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
'''
|
||||||
|
Given an array arr[] of size n-1 with integers in the range of [1, n], the task is to find the missing number from the first N integers.
|
||||||
|
|
||||||
|
Note: There are no duplicates in the list.
|
||||||
|
|
||||||
|
Input: arr[] = {1, 2, 4, 6, 3, 7, 8} , n = 8
|
||||||
|
Output: 5
|
||||||
|
Explanation: Here the size of the array is 8, so the range will be [1, 8]. The missing number between 1 to 8 is 5
|
||||||
|
|
||||||
|
Input: arr[] = {1, 2, 3, 5}, n = 5
|
||||||
|
Output: 4
|
||||||
|
Explanation: Here the size of the array is 4, so the range will be [1, 5]. The missing number between 1 to 5 is 4
|
||||||
|
'''
|
||||||
|
|
||||||
|
def find_missing_number(arr, n):
|
||||||
|
hash = [0] * (n+1)
|
||||||
|
|
||||||
|
for num in arr:
|
||||||
|
hash[num] += 1
|
||||||
|
for i in range(1, (n+1)):
|
||||||
|
if hash[i] == 0:
|
||||||
|
return i
|
||||||
|
return -1
|
||||||
|
|
||||||
|
print(find_missing_number([1,2,3,4,6,7,8], 8))
|
19
data_structures/arrays/rotate_elements.py
Normal file
19
data_structures/arrays/rotate_elements.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
"""
|
||||||
|
Given an Array of size N and a value K,
|
||||||
|
around which we need to right rotate the array.
|
||||||
|
How do you quickly print the right rotated array?
|
||||||
|
|
||||||
|
Input: Array[] = {1, 3, 5, 7, 9}, K = 2.
|
||||||
|
Output: 7 9 1 3 5
|
||||||
|
Explanation:
|
||||||
|
After 1st rotation – {9, 1, 3, 5, 7}After 2nd rotation – {7, 9, 1, 3, 5}
|
||||||
|
"""
|
||||||
|
|
||||||
|
def right_rotate(arr, k):
|
||||||
|
n = len(arr)
|
||||||
|
k = k % n
|
||||||
|
arr = arr[n-k:] + arr[:n-k]
|
||||||
|
return arr
|
||||||
|
|
||||||
|
# Test the function with the provided input
|
||||||
|
print(right_rotate([1, 3, 5, 7, 9], 2)) # Expected output: [7, 9, 1, 3, 5]
|
Loading…
x
Reference in New Issue
Block a user