5. Remove Element
easyAsked at SnowflakeRemove all instances of a target value from an array in-place. Snowflake uses this to test whether you can write a tight scan loop — the same shape as a predicate pushdown filter over a column chunk.
By Alex Chen, Founder, InterviewChamp.AI · Last verified
Source citations
Public interview reports confirming this problem appears in Snowflake loops.
- Glassdoor (2025-Q4)— Snowflake SDE-I phone screen warm-up.
- Blind (2025-12)— Reported at Snowflake intern screens.
Problem
Given an integer array nums and an integer val, remove all occurrences of val in nums in-place. The order of the elements may be changed. Then return the number of elements in nums which are not equal to val.
Constraints
0 <= nums.length <= 1000 <= nums[i] <= 500 <= val <= 100
Examples
Example 1
nums = [3,2,2,3], val = 32, nums = [2,2,_,_]Example 2
nums = [0,1,2,2,3,0,4,2], val = 25, nums = [0,1,4,0,3,_,_,_]Approaches
1. Filter into new array
Build a new array with everything except val.
- Time
- O(n)
- Space
- O(n)
function removeElement(nums, val) {
const result = nums.filter(x => x !== val);
for (let i = 0; i < result.length; i++) nums[i] = result[i];
return result.length;
}Tradeoff: Violates the in-place requirement. Mention to acknowledge but reject.
2. Two-pointer write-index (optimal)
Walk the array. Maintain a write index that only advances when the current element is not val.
- Time
- O(n)
- Space
- O(1)
function removeElement(nums, val) {
let write = 0;
for (let read = 0; read < nums.length; read++) {
if (nums[read] !== val) {
nums[write] = nums[read];
write++;
}
}
return write;
}Tradeoff: Single pass, O(1) extra space. Identical loop to a vectorized predicate filter.
Snowflake-specific tips
Snowflake interviewers want the read/write pointer pattern stated explicitly. Bonus signal: discuss the vectorized version — process in batches of 64 with a bitmask, the way Snowflake's execution engine actually evaluates predicates on column chunks.
Common mistakes
- Using two pointers from opposite ends and swapping — works but changes order more than necessary, and complicates reasoning.
- Returning the array instead of the count.
- Forgetting to mutate nums (just incrementing a counter doesn't change the array).
Follow-up questions
An interviewer at Snowflake may pivot to one of these next:
- What if you must preserve the original order of remaining elements?
- What if val could be a list of values?
- Vectorize this — process 64 elements at a time with a bitmask.
Solve it now
Free. No sign-up. Python and JavaScript run instantly in your browser.
FAQ
When would you swap from the end instead?
If val is rare, swapping from the end minimizes writes. If val is common, the write-pointer pattern is better. Snowflake interviewers like the trade-off discussion.
How does this connect to predicate pushdown?
When Snowflake filters WHERE col != val, the engine runs exactly this loop over each column chunk, often vectorized with SIMD. The shape of the algorithm is identical.
Practice these live with InterviewChamp.AI
Drill Remove Element and other Snowflake interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.
Practice these live with InterviewChamp.AI →