トピック
入力サンプル
10
55 11 9 15 67 12 18 33 6 22
10 20
出力サンプル
55 9 67 33 6 22
コード
#include<iostream>
using namespace std;
void deletes(int* arr, int& sz, int left, int right)
{
int newIdx = 0;
for (int i = 0; i < sz; ++i)
{
if (arr[i] < left || arr[i] > right)
{
arr[newIdx] = arr[i];
newIdx++;
}
}
sz = newIdx;
}
int main()
{
int num;
cin >> num;
int* seq = new int[num];
for (int i = 0; i < num; ++i)
{
cin >> seq[i];
}
int left, right;
cin >> left;
cin >> right;
deletes(seq, num, left, right);
for (int i = 0; i < num; ++i)
{
cout << seq[i];
if (i < num - 1)
cout << " ";
}
delete[] seq;
return 0;
}
① 機能deletes
: 指定範囲外の配列要素を削除
arr: 整数配列へのポインタ
sz: 整数配列のサイズ、参照を渡して配列サイズを更新
left: 指定範囲の左境界
right: 右境界指定範囲の要素
を削除 ② 配列サイズを更新、指定範囲外の要素を削除