逆必要はないノードKの数よりも、最終的に少ない;インターバルリストを逆に、逆の順序で各単一のリンク・リストとの間のノードKは、新しいリストを印刷する要求時間複雑度はO(N)であり、追加の空間の複雑さはO(1) 。

逆の順序で間隔リスト
の説明

Kは逆必要はないノードの数よりも、最終的に少ない;各単一リンクリストの間の逆のノードKは、新しいリストを印刷する要求時間複雑度はO(N)であり、追加の空間の複雑さはO(1)。

入力

行動の数、スペースで区切られた各テスト入力の各行の値は、第一鎖の長さを表し、中間ノード値、最後K.の代表と、第1の実施形態の入力

出力

新しいリストの各出力の動作は、ノード値はスペースではなく、宇宙の終わりで区切られています。

サンプル入力1

2
8 1 2 3 4 5 6 7 8 3
8 a b c d e f g h 4

サンプル出力1

3 2 1 6 5 4 7 8
d c b a h g f e

import java.io.EOFException;
import java.util.*;

public class Main {
    private static int T;
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        T = in.nextInt();
        in.nextLine();
        while (T-- != 0) {
            String s = in.nextLine();
            String[] dataStr = s.split(" ");

            int n = Integer.valueOf(dataStr[0]);
            if (n == 0){
                print();
                continue;
            }
            int spaceCnt = n-1;
            String[] strings = new String[n];
            for (int i = 0; i < n; i++) {
                strings[i] = dataStr[i+1];
            }
            int k = Integer.parseInt(dataStr[dataStr.length-1]);
            if (k == 0){
                for (int i = 0; i < n; i++) {
                    System.out.print(strings[i]);
                    if (spaceCnt-- != 0){
                        System.out.print(" ");
                    }
                }
                print();
                continue ;
            }
            if (k > n){
                for (int i = 0; i < n; i++) {
                    System.out.print(strings[i]);
                    if (spaceCnt-- != 0){
                        System.out.print(" ");
                    }
                }
                print();
                continue ;
            }
            int point = -1;
            while (point + k < n){
                for (int i = 0; i < k; i++) {
                    System.out.print(strings[point + k - i]);
                    if (spaceCnt-- != 0){
                        System.out.print(" ");
                    }
                }
                point += k;
            }
            if (point < n){
                for (int i = point + 1; i < n; i++) {
                    System.out.print(strings[i]);
                    if (spaceCnt-- != 0){
                        System.out.print(" ");
                    }
                }
            }
            print();
        }
    }


    private static void print(){
        if (T == 0){
            System.out.println();
        }else{
            System.out.println();
        }
    }
}

おすすめ

転載: www.cnblogs.com/billxxx/p/11768967.html