先将数据排序(降序或升序)
建立一个“栈”,三种情况:
1.栈为空:压入一个元素
2.栈不为空 且 栈顶元素不等于将入栈元素:压入一个元素
3.栈不为空 且 栈顶元素等于将入栈元素:删除将压入元素(如果想删去所有重复元素,需要再将栈顶元素出栈)
vector<int> remove_same_elements(vector<int>& nums)
{
sort(nums.begin(), nums.end());//排序
vector<int> ans;
for (auto e : nums)
{
if (ans.empty() || ans.back() != e)
ans.push_back(e);
//else
// ans.pop_back();//如果删除所有重复元素,加上该条语句
}
return ans;
}
完整测试代码:
vector<int> remove_same_elements(vector<int>& nums)
{
sort(nums.begin(), nums.end());//排序
vector<int> ans;
for (auto e : nums)
{
if (ans.empty() || ans.back() != e)
ans.push_back(e);
//else
// ans.pop_back();//如果删除所有重复元素,加上该条语句
}
return ans;
}
void test()
{
vector<int> nums;
nums.push_back(4); nums.push_back(2); nums.push_back(4);
nums.push_back(8); nums.push_back(5); nums.push_back(4);
nums.push_back(6); nums.push_back(8); nums.push_back(4);
nums.push_back(7); nums.push_back(4); nums.push_back(4);
vector<int> ans = remove_same_elements(nums);
for (auto e : ans)
{
cout << e << " ";
}
cout << endl;
}
int main()
{
test();
return 0;
}