网易编程题------操作序列

题目描述

小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。
输入描述:
输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。
第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。
输出描述:
在一行中输出操作n次之后的b序列,以空格分割,行末无空格。
示例1
输入
4
1 2 3 4
输出
4 2 1 3

 
  
// 同一种思想,不同的实现。
// 实现方法1----实现方法2更容易理解
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;
public class   OperationSequence  {
   public static void main(String[] args) throws IOException{
      BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      int n = Integer.parseInt(reader.readLine());
      int[] data = new int[n];
      String[] dataString = reader.readLine().split(" ");
      int j=0;
      int i=n-1;
      while(i>=1)  {
        data[j++] = Integer.parseInt(dataString[i]);
        i=i-2;
      }
      if( i==0 ){
         i=1;
         while(i<=n-2)  {
           data[j++] = Integer.parseInt(dataString[i]);
           i=i+2;
         }
      }
      else  {
         i=0;
         while(i<=n-2)  {
           data[j++] = Integer.parseInt(dataString[i]);
           i=i+2;
         }
      }
      
   }
}
// 实现方法2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main  {
       public static void main(String[] args) throws IOException{
          BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
          int n = Integer.parseInt(reader.readLine());
          String[] dataString = reader.readLine().split(" ");
          int[] dataindex = new int[n];
          int j=0;
          for(int i=n-1;i>=0;i=i-2)  {
              dataindex[j++]=i;
          }
          j=n-1;
          for(int i=n-2;i>0;i=i-2) {
             dataindex[j--]=i; 
          }
          StringBuffer buffer=new StringBuffer("");
          for(int z=0;z<n;z++)  {
              if(z!=0)  buffer.append(" ");
              buffer.append(dataString[dataindex[z]]);
          }
          System.out.println(buffer.toString());
       }
}
        

 

转载于:https://www.cnblogs.com/lixiaochi/p/10718904.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值