26. 删除排序数组中的重复项/27. 移除元素/80. 删除排序数组中的重复项 II

版权声明:欢迎去我的新家https://www.jianshu.com/u/906a78709f1d https://blog.csdn.net/dongyanwen6036/article/details/85276560
26. 删除排序数组中的重复项
class Solution {
 public:
	 //剑指offer面试3不一样,这题用的双指针Ori,New

	 int removeDuplicates(vector<int>& nums) {
		 int len = nums.size();
		 if (len <= 0)return 0;
		 int New = 0,Ori = 0;
		 for (New, Ori; New < len&&Ori < len;)
		 {			 
			 int temp = nums[Ori];   
			 while (Ori < len&& temp == nums[Ori] )// 跳过重复的数
				 Ori++;
			 nums[New] = temp; New++;
		 }
		 nums.erase(nums.begin()+New,nums.end());//删除最后的New到最后的数据
		 len = nums.size();
		 return len;
	 }
 };

vector::erase

27. 移除元素
class Solution {
 public:
	 //再用双指针
	 int removeElement(vector<int>& nums, int val) {
		 int len = nums.size();
		 if (len <= 0)return 0;
		 int New = 0, Ori = 0;
		 for (New, Ori; New < len&&Ori < len;)
		 {
			 while (Ori< len&&nums[Ori] == val)Ori++;
			 if (Ori < len)//防止上面最后一个元素相等
			 {
				 nums[New] = nums[Ori]; 
				 New++; 
				 Ori++;
			 }
		 }
		 nums.erase(nums.begin() + New, nums.end());
		 return nums.size();
	 }
 };
 
80. 删除排序数组中的重复项 II

要求:给定一个排序数组,你需要在本体删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。

猜你喜欢

转载自blog.csdn.net/dongyanwen6036/article/details/85276560