首页 > 试题广场 >

删除有序数组中重复的元素 ii

[编程题]删除有序数组中重复的元素 ii
  • 热度指数:13015 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定一个有序数组,删除其中部分元素,使得剩下的每个数最多出现2次。要求删除的数的数量尽可能少。

例如:
给出有序数组 A =[1,1,1,2,2,3],
你给出的函数应该返回length =5,  A 变为[1,1,2,2,3].

头像 mythwind
发表于 2022-04-29 09:18:22
快慢双指针,快指针筛选,慢指针赋值。 int index = 2; for (int i = 0; i < A.length; i ++) { if (A[i] != A[index - 2]) { A[index++] = A[i]; } } return index;
头像 华科不平凡
发表于 2020-09-24 17:45:14
一个通用的思路:用index记录新数组的下标,遍历旧数组,如果当前元素与A[index-2]的元素不相同,则表示这个数应该放入新数组。(其中2可以变为1,3,4...)代码如下: // // Created by jt on 2020/9/24. // class Solution { public 展开全文
头像 魏北北
发表于 2023-08-01 21:40:24
/** * * @param A int整型一维数组 * @param ALen int A数组长度 * @return int整型 */ int removeDuplicates(int* A, int ALen) { // write code here int i 展开全文