There are N rectangles numbered from 0 to N-1. The K-th rectangle has size A[K] × B[K].
We want to arrange as many rectangles as possible into a strip. The rectangles can be arranged into a strip if they all share a side of the same length (which becomes the height of the strip). Note that rectangles can be rotated.
Write a function:
def solution(A, B)
that, given two arrays A and B of N integers each, returns the maximum number of rectangles that can be arranged into a strip.
Examples:
1. Given A = [2, 3, 2, 3, 5] and B = [3, 4, 2, 4, 2], the function should return 3. Choosing the 0th, 2nd and 4th rectangles we can obtain the following strip of height 2 (note that the 0th rectangle was rotated):
We can also choose the 0th, 1st and 3rd rectangles to obtain a strip of height 3. Here we have rotated 1st and 3rd rectangles:
2. Given A = [2, 3, 1, 3] and B = [2, 3, 1, 3], the function should return 2. We can choose the 1st and 3rd rectangles:
3. Given A = [2, 10, 4, 1, 4] and B = [4, 1, 2, 2, 5], the function should return 3. We can choose the 0th, 2nd and 4th rectangles to obtain a strip of height 4:
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- arrays A and B both consist of N integers;
- each element of arrays A and B is an integer within the range [1..1,000,000,000].
def solution(A, B):
results = {}
#c = max (A+B)
#results= [0]*(c+1)
#print (results)
for rectangle in range(len(A)):
print (rectangle)
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
#print (list(results.values()))
#print (max(list(results.values())))
return ((max(list(results.values()))))
def solution(A, B):
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
#print (list(results.values()))
#print (max(list(results.values())))
return ((max(list(results.values()))))
def solution(A, B):
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
funct update_results()
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
funct update_results(num)
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
funct update_results(number):
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[B[rectangle]]+=1
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 80, in main sol = __import__('solution') File "/tmp/solution.py", line 4 else: results[number]+=1 ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 80, in main sol = __import__('solution') File "/tmp/solution.py", line 4 else: results[number]+=1 ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 80, in main sol = __import__('solution') File "/tmp/solution.py", line 4 else: results[number]+=1 ^ IndentationError: unexpected indent
def solution(A, B):
results = {}
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 80, in main sol = __import__('solution') File "/tmp/solution.py", line 6 else: results[number]+=1 ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 80, in main sol = __import__('solution') File "/tmp/solution.py", line 6 else: results[number]+=1 ^ IndentationError: unexpected indent
Traceback (most recent call last): File "exec.py", line 139, in <module> main() File "exec.py", line 80, in main sol = __import__('solution') File "/tmp/solution.py", line 6 else: results[number]+=1 ^ IndentationError: unexpected indent
def solution(A, B):
results = {}
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
results = {}
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
else: results[A[rectangle]]+=1
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
#else: results[A[rectangle]]+=1
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
#else: results[A[rectangle]]+=1
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
if not (B[rectangle] in results): results[B[rectangle]]=1
else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
#else: results[A[rectangle]]+=1
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
#if not (B[rectangle] in results): results[B[rectangle]]=1
#else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
#else: results[A[rectangle]]+=1
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(A[rectangle])
#if not (B[rectangle] in results): results[B[rectangle]]=1
#else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
#else: results[A[rectangle]]+=1
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
#if not (B[rectangle] in results): results[B[rectangle]]=1
#else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
#else: results[A[rectangle]]+=1
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
#if not (B[rectangle] in results): results[B[rectangle]]=1
#else: results[B[rectangle]]+=1
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
#if not (A[rectangle] in results): results[A[rectangle]]=1
#else: results[A[rectangle]]+=1
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
return ((max(list(results.values()))))
def solution(A, B):
def update_results(number):
if not (number in results): results[number]=1
else: results[number]+=1
results = {}
for rectangle in range(len(A)):
update_results(A[rectangle])
if A[rectangle]!=B[rectangle]:
update_results(B[rectangle])
return ((max(list(results.values()))))
The solution obtained perfect score.
Height of the strip is not the most common element of A, the most common element of B or the most common element from both array. N = 15. Points x 2.
Height of the strip is not the most common element of A, the most common element of B or the most common element from both array. N = 200. Points x 2.
Height of the strip is not the most common element of A, the most common element of B or the most common element from both array. Points x 2.