题解 | #数组元素处理#
数组元素处理
https://www.nowcoder.com/practice/bb840c11be674d01b582847a6921d384
解法1
最暴力的做法,按照题目要求碰到零依次移到后面就好了
#include <iostream>
using namespace std;
void func(int* p, int n);
int main() {
int arr[6] = { 0 };
for (int i = 0; i < 6; i++) {
cin >> arr[i];
}
func(arr, 6);
for (int i = 0; i < 6; i++) {
if (i == 5) {
cout << arr[i] << endl;
}
else {
cout << arr[i] << " ";
}
}
return 0;
}
void func(int* p, int n) {
// write your code here......
int temp;
for (int *q1 = p; q1 != p + n; ++q1)
{
if (*q1 == 0)
{
for (int *q2 = q1; q2 != p+n-1; ++q2)
{
temp = *q1;
*(q2) = *(q2 + 1);
}
*(p + n -1) = 0;
}
}
}
解法2
另一种解法,重新定义一个数组,把原始数组非零元素存放进去,剩下的位置放零元素。
#include <iostream>
using namespace std;
void func(int* p, int n);
int main() {
int arr[6] = { 0 };
for (int i = 0; i < 6; i++) {
cin >> arr[i];
}
func(arr, 6);
for (int i = 0; i < 6; i++) {
if (i == 5) {
cout << arr[i] << endl;
}
else {
cout << arr[i] << " ";
}
}
return 0;
}
void func(int* p, int n) {
// write your code here......
int *q1 = p;
int cnt = 0;
for (int i = 0; i < n; ++i)
{
if(*p != 0)
{
*q1 = *p;
++q1;
++cnt;
}
++p;
}
for (int i = cnt; i < n; ++i)
{
*q1 = 0;
++q1;
}
}
}
C++题解 文章被收录于专栏
记录在牛客网用C++刷题的题解思路

查看20道真题和解析