Given an array and a range [lowVal, highVal], partition the array around the range such that array is divided in three parts.
1) All elements smaller than lowVal come first.
2) All elements in range lowVal to highVal come next.
3) All elements greater than highVal appear in the end.
The individual elements of three sets can appear in any order.
Input: arr = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32] lowVal = 14, highVal = 20 Output: arr = [1, 5, 4, 2, 3, 1, 14, 20, 20, 54, 87, 98, 32] Input: arr = [1, 14, 5, 20, 4, 2, 54, 20, 87, 98, 3, 1, 32] lowVal = 20, highVal = 20 Output: arr = [1, 14, 5, 4, 2, 3, 1, 20, 20, 54, 87, 98, 32]
We have existing solution for this problem please refer Three way partitioning of an array around a given range link. We can solve this problem quickly in python using List Comprehension. Approach is simple,
- Separate list in three parts, first one will contain elements less than lowVal, second will contain elements between lowVal and highVal, third will contain elements greater than highVal.
- Concatenate all three parts together.
[1, 5, 4, 2, 3, 1, 14, 20, 20, 54, 87, 98, 32]
- Python List Comprehension | Segregate 0's and 1's in an array list
- Move all zeroes to end of array using List Comprehension in Python
- Python List Comprehension and Slicing
- Count set bits using Python List comprehension
- K’th Non-repeating Character in Python using List Comprehension and OrderedDict
- List comprehension and ord() in Python to remove all characters other than alphabets
- Python List Comprehension to find pair with given sum from two arrays
- Python List Comprehension | Sort even-placed elements in increasing and odd-placed in decreasing order
- range() to a list in Python
- Python | Numbers in a list within a given range
- Python | Assign range of elements to List
- Python | Alternate range slicing in list
- Python | Create list of numbers with given range
- Python | Front and rear range deletion in a list
- Python | Print list elements in circular range
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.