我是靠谱客的博主 紧张老鼠,这篇文章主要介绍双指针游戏(leetcode26)题目思路,现在分享给大家,希望可以做个参考。

题目

不另外开空间,使得一个排好顺序的有重复元素的数组变成一个前k个是排好序的无重复元素的数组,k表示非重复元素的个数。

思路

  1. 想要不开设空间 。每发现一个重复元素把整个数组向前移动一位。
  2. 通过一个快指针,一个慢指针。当快指针和慢指针所指的元素不同时,慢指针的值变成当前快指针的值。
    重点在于直接赋值。因为对有效个数之外的数组是没有要求的。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdio> class Solution { public: int removeDuplicates(vector<int>& nums) { int n = nums.size(); if(n == 0)return 0; int i = 0; for(int j = 1; j < n; j ++) { if(nums[i] != nums[j]) { nums[++i] = nums[j]; } } return i + 1; } };

最后

以上就是紧张老鼠最近收集整理的关于双指针游戏(leetcode26)题目思路的全部内容,更多相关双指针游戏(leetcode26)题目思路内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部