Python – Rearrange elements second index greater than first
Last Updated :
28 Feb, 2023
Given 2 lists, for a given index, 2nd list element is always larger than first, and if not, we rearrange it.
Input : test_list1 = [36, 38, 40, 132], test_list2 = [35, 37, 39, 41, 133]
Output : [37, 39, 41, 133]
Explanation : Each element in result list is greater than its index counterpart of 1st list. (Eg. 37 > 36)
Input : test_list1 = [2, 6], test_list2 = [5, 3, 8]
Output : [5, 8]
Explanation : Here 5 > 2 and 8 > 6.
Method 1: Using loop This is brute way to tackle this problem. In this, we try to get best suitable next higher element after the whole list traversal and perform the necessary rearrangement.
Python3
test_list1 = [ 14 , 16 , 18 , 110 ]
test_list2 = [ 13 , 15 , 17 , 19 , 111 ]
print ("The original list 1 is : " + str (test_list1))
print ("The original list 2 is : " + str (test_list2))
x = y = 0
res1, res2 = [], []
while x < len (test_list2) and y < len (test_list1):
if test_list2[x] > test_list1[y]:
res2.append(test_list2[x])
res1.append(test_list1[y])
while y < len (test_list1) and test_list2[x] > test_list1[y]:
res1[ - 1 ] = test_list1[y]
y + = 1
x + = 1
print (" List 2 after conversion : " + str (res2))
|
Output :
The original list 1 is : [14, 16, 18, 110]
The original list 2 is : [13, 15, 17, 19, 111]
List 2 after conversion : [15, 17, 19, 111]
Time complexity: O(n), where n is the length of test_list1 + test_list2.
Auxiliary Space: O(n), where n is the length of test_list1 + test_list2. The additional space is used to store the rearranged lists res1 and res2.
Method 2: Using list comprehension
Python3
test_list1 = [ 14 , 16 , 18 , 110 ]
test_list2 = [ 13 , 15 , 17 , 19 , 111 ]
print ( "The original list 1 is : " + str (test_list1))
print ( "The original list 2 is : " + str (test_list2))
x = 0
res2 = [test_list2[i] for i in range ( len (test_list2)) if x < len (test_list1) and test_list2[i] > test_list1[x]]
x = [i for i in range ( len (test_list1)) if x < len (test_list2) and test_list2[x] > test_list1[i]]
print ( "List 2 after conversion : " + str (res2))
|
Output
The original list 1 is : [14, 16, 18, 110]
The original list 2 is : [13, 15, 17, 19, 111]
List 2 after conversion : [15, 17, 19, 111]
Time complexity: O(n)
Auxiliary Space: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...