Loading the journal
Loading the journal
Two Pointers (Read/Write)
5 recent
Go step by step: try it yourself before the video and the visual. Progress saves on this device.
Community-reported · source · updated 2026-10-08. ● asked in the last 6 months.
Step 1
Know these before you start
Tick what you already know
Step 2
Try it on paper
5–10 minutes, no code yet
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.
Return k, the number of elements in nums which are not equal to val. The first k elements of nums must contain those elements; the rest does not matter.
Input: nums = [3,2,2,3], val = 3
Output: 2, nums = [2,2,_,_]
Input: nums = [0,1,2,2,3,0,4,2], val = 2
Output: 5, nums = [0,1,4,0,3,_,_,_] (any order of the first 5 is accepted)
0 ≤ nums.length ≤ 100
0 ≤ nums[i] ≤ 50
0 ≤ val ≤ 100
val, packed at the frontk = 0val → k = 0val not present → k = nStep 6
Get it accepted
All test cases pass
Step 7
Review it so it sticks
Re-solve from memory after
Reading the solution first feels like progress, but it makes the next similar problem — and the interview version — much harder, because you skipped the part where you figure it out. Give it an honest 20–30 minutes. Stuck? Re-read the pattern, watch the concept video, or try the brute force first.
Hidden: approach · solution code · optimal solution