先将数据排序(降序或升序)
建立一个“栈”,三种情况:
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;
}