目录
一、移除元素
(一)题目
(二)代码
二、合并两个有序数组
(一)题目
(二)代码
一、移除元素
27. 移除元素 - 力扣(LeetCode)
(一)题目
(二)代码
#include<iostream>
#include<algorithm>
#include<vector>
#define MAX 100
using namespace std;
int removeElement(vector<int>& nums, int val) {
int len = nums.size();
for (int i = 0; i < nums.size(); i++)
{
if (nums[i] == val)
{
len--;
}
}
int k = 0;
for (int i = 0; i < nums.size(); i++)//寻找等于val的元素
{
if (nums[i] == val)
{
k = i;//用k记录等于val元素的下标
}
for (int j = i + 1; j < nums.size(); j++)//寻找不等于val的元素
{
if (nums[j] != val)
{
swap(nums[j], nums[k]);
break;
}
}
}
return len;
}
int main()
{
int n = 0,x=0;
vector<int>a(MAX,0);
cout << "请输入数据个数:";
cin >> n;
cout << "请依次输入数据:";
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
cout << "请输入val的值:";
cin >> x;
int y= removeElement(a, x);
for (int i = 0; i < n; i++)
{
cout<<a[i]<< " ";
}
return 0;
}
二、合并两个有序数组
(一)题目
88. 合并两个有序数组 - 力扣(LeetCode)
(二)代码
用双指针文章来源:https://www.toymoban.com/news/detail-412706.html
#include<iostream>
#include<algorithm>
#include<vector>
#define MAX 1000
using namespace std;
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
{
vector<int>nums3(m+n,0);
int i = 0, j = 0,k=0;
int tmp = 0;
while (i < m && j < n)
{
if (nums1[i] < nums2[j])
{
nums3[k++] = nums1[i++];
}
else
{
nums3[k++] = nums2[j++];
}
}
while (i < m)
{
nums3[k++] = nums1[i++];
}
while (j < n)
{
nums3[k++] = nums2[j++];
}
for (int a = 0; a < m + n; a++)
{
nums1[a] = nums3[a];
}
}
//void merge(vector<int>& nums1, int m, vector<int>& nums2, int n)
//{
// vector<int>nums3(m + n, 0);
// int i = 0, j = 0,k=0;
// int tmp = 0;
//
// while (i < m || j < n)
// {
// if (i == m)
// tmp = nums2[j++];
// else if (j == n)
// tmp = nums1[i++];
// else if (nums1[i] < nums2[j])
// tmp = nums1[i++];
// else
// {
// tmp = nums2[j++];
// }
//
// nums3[k++] = tmp;
// }
// for (int a = 0; a < m + n; a++)
// {
// nums1[a] = nums3[a];
// }
// }
int main()
{
int m = 0,n=0;
vector<int>_nums1(MAX, 0);
vector<int>_nums2(MAX, 0);
cout << "请依次输入nums1,nums2数组数据个数:";
cin >> m >> n;
cout << "请依次输入nums1数组的数据:";
for (int i = 0; i < m; i++)
{
cin >> _nums1[i];
}
cout << "请依次输入nums2数组的数据:";
for (int i = 0; i < n; i++)
{
cin >> _nums2[i];
}
merge(_nums1, m, _nums2, n);
for (int k = 0; k < m + n; k++)
{
cout << _nums1[k] << " ";
}
return 0;
}
文章来源地址https://www.toymoban.com/news/detail-412706.html
到了这里,关于27.移除元素+88.合并两个有序数组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!