> 文章列表 > 27.移除元素+88.合并两个有序数组

27.移除元素+88.合并两个有序数组

27.移除元素+88.合并两个有序数组

目录

一、移除元素

(一)题目

(二)代码 

二、合并两个有序数组

(一)题目

(二)代码


一、移除元素

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) 

 

(二)代码

用双指针

#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;
}