时间复杂度:O(n)
空间复杂度:O(1)
class Solution {
public:
int removeDuplicates(vector& nums) {
if(nums.size()==0)return 0;
int i=0;
for(vector::iterator itr= nums.begin()+1; itr!= nums.end() ;itr++)
{
if (nums[i]!=*itr)
{
i++;
nums[i]=*itr;
}
}
return i+1;
}
};
26ms->96.44%
int removeDuplicates(int* nums, int numsSize) {
if(numsSize==0)return 0;
int i=0;
for(int j=1;jif(nums[i]!=nums[j])
{
i++;
nums[i]=nums[j];
}
}
return i+1;
}
16ms->59.21%
int removeDuplicates(int* nums, int numsSize) {
if (numsSize == 0)return 0;
int *i = nums;
int c = 0;
for (int j=0; j1; j++)
{
nums++;
if (*i != *nums)
{
i++;
c++;
*i =*nums;
}
}
return c + 1;
}
12ms->87.59%
bool isPossible(vector<int>& nums) {
int i = 0;
int cut = 0;
for (int j = 0; j1; j++)
{
if (nums[j + 1] == nums[j] + 1)
{
i++;
}
else if (nums[j + 1] == nums[j])
{
int re = 2;
for (int k = j + 2; k < nums.size(); k++)
{
if (k + re - 1 > nums.size() - 1)
break;
if (nums[k] == nums[j])
{
re++;
}
else if (nums[k+re-1] == nums[j] + 1)
{
nums.insert(nums.begin() + j+1, nums[k]);
nums.erase(nums.begin() + k+1);
i++;
j++;
re=1;
}
else if (nums[k + re-1] > (nums[j] + 1))
{
break;
}
}
cut =cut+ i+1;
//j = cut-1;
if (i < 2)
{
return false;
}
else
{
i = 0;
}
}
else
{
if (i < 2)
{
return false;
}
else
{
cut = cut + i + 1;
j = cut;
i = 0;
}
}
}
if (i < 2)
{
return false;
}
return true;
}
124ms
bool isPossible(vector<int>& nums) {
unordered_map<int,int> a, b;
for(vector<int>::iterator i=nums.begin();i!=nums.end();i++)
a[*i]++;
for(vector<int>::iterator i=nums.begin();i!=nums.end();i++)
{
if(!a[*i]) continue;
if(b[*i]>0)
a[*i]--,b[*i]--,b[*i+1]++;
else if(a[*i+1]&&a[*i+2])
a[*i]--,a[*i+1]--,a[*i+2]--,b[*i+3]++;
else return false;
}
return true;
}
92ms->79.31%
public int addDigits(int num) {
int tmp=0;
while(num>9)
{
tmp=0;
while(num>0)
{
tmp=tmp+num%10;
num=num/10;
}
num=tmp;
}
return num;
}
4ms
public int addDigits3(int num) {
if (num < 10 || num==0) {
return num;
}
num=num%9;
if(num==0)
num = 9;
return num;
}
2ms