给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。
给定数组nums = [1,1,2],
输入格式为[1,1,2]
函数应该返回新的长度2,并且原数组nums的前两个元素被修改为1, 2。
你不需要考虑数组中超出新长度后面的元素。
[1,1,2]
2
#include<bits/stdc++.h> using namespace std; int main(){ int n; char c; vector<int> nums; cin>>c; while(cin>>n>>c){ nums.push_back(n); if(c==']') break; } nums.erase(unique(nums.begin(),nums.end()),nums.end()); cout<<nums.size()<<endl; } //利用erase与unique直接去重,再输出长度。
A=input().strip('[').strip(']').split(',') A.sort() c=0 for i in range(len(A)-1): if A[i]!=A[i+1]: c+=1 print(c+1)
代码1 #include<iostream> (720)#include<vector> using namespace std; int main(){ int n; char c; vector<int> nums; cin>>c; while(cin>>n>>c) nums.emplace_back(n); if(nums.size()==0) return 0; int res=1,first=0; for(int i=0;i<nums.size()-1;i++){ if(nums[i]!=nums[i+1]){ if(first!=0){ nums[first]=nums[i+1]; first++; } res++; } if(nums[i]==nums[i+1]&&first==0) first=i+1; } cout<<res; return 0; }
代码2 #include<iostream> (720)#include<vector> using namespace std; int main(){ int n; char c; vector<int> nums; cin>>c; while(cin>>n>>c) nums.emplace_back(n); if(nums.size()==0) return 0; int i=0; for(int j=1;j<nums.size();j++){ if(nums[j]!=nums[i]){ i++; nums[i]=nums[j]; } } cout<<i+1; return 0; }
#include <cstdio> (802)#include <iostream> #include <cstring> (803)#include <queue> #include <algorithm> using namespace std; int num[10005]; int main() { int i = 0; char c; cin >> c; cin >> num[i++] >> c; while (cin >> num[i] >> c) { if (num[i] != num[i - 1]) { i++; } } cout << i; return 0; }
#include <iostream> (720)#include <string> using namespace std; int main(){ string str; cin >> str; string tmp; int begin = 1, end = 1; int count = 0; while (end < str.length()){ while (str[end] >= '0' && str[end] <= '9') end++; if (tmp.compare(str.substr(begin, end-begin)) != 0){ tmp = str.substr(begin, end-begin); count++; } end ++; begin = end; } cout << count; return 0; }