求解答
任务279:【入门】数组元素的移动
目标
数组元素的移动,把数组的第x个位置的元素先保存起来,然后把x+1到n的元素,依次往前移一位,最后原来的第x个位置的元素放在最后
输入描述
有3行
第一行有一个整数n( n <= 10 )
第二行有n个整数
第三行有一个整数x
输出描述
移动后的数组
示例
输入:
8
1 2 3 4 5 6 7 8
1
输出:
2 3 4 5 6 7 8 1
求解答
任务279:【入门】数组元素的移动
目标
数组元素的移动,把数组的第x个位置的元素先保存起来,然后把x+1到n的元素,依次往前移一位,最后原来的第x个位置的元素放在最后
输入描述
有3行
第一行有一个整数n( n <= 10 )
第二行有n个整数
第三行有一个整数x
输出描述
移动后的数组
示例
输入:
8
1 2 3 4 5 6 7 8
1
输出:
2 3 4 5 6 7 8 1
普通:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[100000],x;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>x;
int t=a[x];
for(int i=x;i<=n;i++)a[i]=a[i+1];
a[n]=t;
for(int i=1;i<=n;i++)cout<<a[i]<<" ";
}
时间复杂度:2n+n-x
简便:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[100000],x;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>x;
for(int i=1;i<=n;i++)
{
if(i==x)continue;
cout<<a[i]<<" ";
}
cout<<a[x];
}
时间复杂度:2n