数组
作者:wallace-lai
发布:2024-02-25
更新:2024-08-09
0. 其他
1. 前缀和
LeetCode 0303
LeetCode 0304
LeetCode 0724
LeetCode 1314
剑指Offer 0013
2. 前缀和加哈希表
LeetCode 0325
LeetCode 0437
LeetCode 0523
LeetCode 0525
LeetCode 0560
LeetCode 0713
LeetCode 1124
LeetCode 1658
剑指Offer 0010
剑指Offer 0011
3. 前缀积
LeetCode 0238
4. 双指针
LeetCode 0026
思路:
(1)用slow指针指向当前数组前半部分没有重复项的最后一个元素,用fast指针指向当前需要判断的元素;
(2)如果slow和fast指针所指向的元素不相同,说明遇到了不同元素,将fast所指向元素加入到没有重复项的子数组的后面;如果相同,则fast指针自增,然后啥也不做;
(3)重复步骤(2),直到fast指针到达末尾;
int removeDuplicates(vector<int>& nums) {
if (nums.size() == 0) {
return 0;
}
int slow = 0;
int fast = 0;
while (fast < nums.size()) {
if (nums[fast] != nums[slow]) {
slow++;
nums[slow] = nums[fast];
}
fast++;
}
return slow + 1;
}
类似题型:
(1)LeetCode 0083