80. Remove Duplicates from Sorted Array II
Tags:
Medium
Skills:
Array
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Bài toán yêu cầu loại bỏ các phần tử trùng lặp trong một mảng đã sắp xếp sao cho mỗi phần tử xuất hiện tối đa hai lần, thực hiện in-place (không dùng mảng phụ), và return độ dài mới của mảng hợp lệ
Approach
k (hoặc count/write_idx ) để đánh dấu vị trí tiếp theo sẽ ghi phần tử hợp lệ vào mảngk < 2 (tức là 2 phần tử đầu luôn giữ lại)k - 2 (tức là chưa có quá 2 phần tử giống nhau liên tiếp)Solution
1function removeDuplicates(nums: number[]): number {
2 let k =0 ;
3 for(const num of nums) {
4 if(k < 2 || num !== nums[k - 2]) {
5 nums[k] = num;
6 k++
7 }
8 }
9 return k
10};k là vị trí sẽ ghi phần tử hợp lệ tiếp theonum trong nums:k < 2 (tức là hai phần tử đầu), luôn giữ lạinum !== nums[k - 2] , nghĩa là phần tử hiện tại chưa xuất hiện quá 2 lần, giữ lạinums[k] = num và tăng k k là độ dài mới của mảng hợp lệ