活跃农民
- 积分
- 530
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-11-23
- 最后登录
- 1970-1-1
|
- #include<iostream>
- #include<vector>
- #include<stack>
- using namespace std;
- void triplen(vector<int> &nums) {
- if (nums.size() < 3)
- return;
- int m = 0;
- int cnt, slow, fast, j;
- j = 0, slow = 0, fast = 1;
- while (slow < nums.size())
- {
- cnt = 1;
- while (fast < nums.size() && nums[slow] == nums[fast]) {
- fast ++;
- cnt ++;
- }
- cout << cnt << " " << slow << " " << fast << " " << nums[slow] << endl;
- if (cnt < 3) {
- nums[j++] = nums[slow];
- if(cnt == 2)
- nums[j++] = nums[fast - 1];
- slow = fast;
- fast++;
- }
- else {
- slow = slow - 1;
- if (slow <= j)
- j = slow;
- if (slow < 0) {
- slow = fast;
- fast ++;
- j = 0;
- }
- }
- }
- nums.resize(j);
- }
- int main()
- {
- vector<int> arr = {2,3,3,3,2,2};
- triplen(arr);
- for (auto num : arr) {
- cout << num << " ";
- }
- return 0;
- }
复制代码 |
|