使用C++和双指针算法移除数组中的元素,且原地移除,不使用额外的空间
2023-12-16 09:27:12
输入一个数组nums和一个值val,在该数组中,凡是与val相等的元素全部移除,并最终输出该数组,C++代码如下:
#include<iostream>
#include<vector>
#include<ctime>//计算代码所需要的时间
using namespace std;
class Solution
{
public:
int removeElement(vector<int>& nums, int val)
{
int numsize = nums.size();
int fast = 0, slow = 0;
for (fast = 0; fast < numsize; fast++)
{
if (nums[fast] != val)
{
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
};
int main()
{
clock_t starttime, endtime;
starttime = clock();//计时开始
Solution solution;
vector<int> v;
int x,val;
cout << "请输入数组:" << endl;
while (cin>>x)
{
v.push_back(x);
if (cin.get()=='\n')
{
break;
}
}
cout << "原数组为:" << endl;
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl;
cout << "请输入需要移除的值:" << endl;;
cin >> val;
int slow = solution.removeElement(v,val);
cout << "slow的值为:" << slow << endl;
v.resize(slow);
cout << "最终数组为:" << endl;
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl;
endtime = clock();//计时结束
cout << "运行时间为: " << (double)(endtime - starttime) / CLOCKS_PER_SEC << "s" << endl;
system("pause");
return 0;
}
注意事项:
? ? ? ?在使用while(cin>>x)循环输入时,一定要把跳出循环的代码写在数组赋值代码的后面,否则就无法将所有数据全部放进数组中,就会导致失败
文章来源:https://blog.csdn.net/m0_45906029/article/details/134936847
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!