第7题:
class Solution {
public:
int removeDuplicates(vector<int>& nums)
{
int new_size = 1;
for (int i = 1; i < nums.size(); i++)
{
if (nums[i - 1] != nums[i])
new_size++;
}
for (int i = 0; i < new_size; i++)
{
int dup = 0;
for (int j = i + 1; j<nums.size() && nums[i] == nums[j] ; j++)
dup++;
if(dup>0)
{
int m = i+1;
for (int k = i+dup; k < nums.size() - 1; k++,m++)
nums[m] = nums[k+1];
}
}
return new_size;
}
};
要点:
1.数组要先判断是否越界,再判断元素是否相等
2.考虑到所有情况:需要去掉重复元素的和本来就没有重复元素的
第8题:
class Solution {
public:
int removeElement(vector<int>& nums, int val)
{
int new_size = nums.size();
for(int i = 0;i<nums.size();i++)
{
if(nums[i] == val)
new_size--;
}
for(int i = 0;i<nums.size();i++)
{
if(nums[i] == val)
{
int k = i;
for(int j = i;j<nums.size()-1;j++)
{
if(nums[j+1] == val)
continue;
else
{
nums[k] = nums[j+1];
k++;
}
}
}
}
return new_size;
}
};
第9题:
class Solution {
public:
int searchInsert(vector<int>& nums, int target)
{
if(target<nums[0])
return 0;
else if(target > nums[nums.size()-1])
return nums.size();
int i = 0;
while(nums[i]<target)
i++;
return i;
}
};
数据结构还没学到排序,所以先这么写,等学完算法,会把这些题重写一遍。