2634. Filter Elements from Array
Description
Given an integer array arr and a filtering function fn, return a filtered array filteredArr.
The fn function takes one or two arguments:
arr[i]- numberΒ fromΒ thearriΒ - index ofarr[i]
filteredArr should only contain the elements from theΒ arr for which the expression fn(arr[i], i) evaluates to a truthy value. AΒ truthyΒ value is a value whereΒ Boolean(value)Β returnsΒ true.
Please solve it without the built-in Array.filter method.
Β
Example 1:
Input: arr = [0,10,20,30], fn = function greaterThan10(n) { return n > 10; }
Output: [20,30]
Explanation:
const newArray = filter(arr, fn); // [20, 30]
The function filters out values that are not greater than 10 Example 2:
Input: arr = [1,2,3], fn = function firstIndex(n, i) { return i === 0; }
Output: [1]
Explanation:
fn can also accept the index of each element
In this case, the function removes elements not at index 0
Example 3:
Input: arr = [-2,-1,0,1,2], fn = function plusOne(n) { return n + 1 }
Output: [-2,0,1,2]
Explanation:
Falsey values such as 0 should be filtered out
Β
Constraints:
0 <= arr.length <= 1000-109Β <= arr[i] <= 109
Solutions
Solution 1: Traversal
We traverse the array \(arr\) and for each element \(arr[i]\), if \(fn(arr[i], i)\) is true, we add it to the answer array. Finally, we return the answer array.
The time complexity is \(O(n)\), where \(n\) is the length of the array \(arr\). Ignoring the space consumption of the answer, the space complexity is \(O(1)\).
1 2 3 4 5 6 7 8 9 | |