Java程序 颠倒列表
颠倒列表是指颠倒列表后,第一个元素应与最后一个元素互换,第二个元素应与倒数第二个元素互换,以此类推,直到中间的元素,最后的列表就是颠倒的列表。
示例:
输入:
"PLATFORM", "LEARNING", "BEST", "THE", "IS", "GFG"
输出:
Reverse order of given List :-
[GFG, IS, THE, BEST, LEARNING, PLATFORM]
我们主要可以通过三种方式来扭转这个名单。
- Recursively
- Using Collections.reverse()
- 使用List.add()和List.remove方法
方法1:使用递归法
一个函数直接或间接地调用自己的过程被称为递归,相应的函数被称为递归函数。
// Java Program to Reverse a List recursively
import java.io.*;
import java.util.*;
class GFG {
public static <T> void revlist(List<T> list)
{
// base condition when the list size is 0
if (list.size() <= 1 || list == null)
return;
T value = list.remove(0);
// call the recursive function to reverse
// the list after removing the first element
revlist(list);
// now after the rest of the list has been
// reversed by the upper recursive call,
// add the first value at the end
list.add(value);
}
public static void main(String[] args)
{
System.out.println(
"Reverse order of given List :- ");
List<String> gfg = new ArrayList<>(
Arrays.asList("PLATFORM", "LEARNING", "BEST", "THE", "IS", "GFG"));
revlist(gfg);
System.out.println(gfg);
}
}
输出
Reverse order of given List :-
[GFG, IS, THE, BEST, LEARNING, PLATFORM]
时间复杂度 :O(N) 其中N是列表的大小
辅助空间: 呼叫堆栈的O(N)
方法二:使用Collections.reverse()
java.util.Collections.reverse()方法是一个java.util.Collections类方法。它反转了作为参数传递的列表中的元素的顺序。
// Java program to reverse the list
// using Collections.reverse() method
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
List<Integer> number = new ArrayList<>(
Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8));
System.out.println(
"Reverse order of given List :- ");
// the number list will be reversed using this method
Collections.reverse(number);
System.out.println(number);
}
}
输出
Reverse order of given List :-
[8, 7, 6, 5, 4, 3, 2, 1]
方法3:使用List.add()+List.remove()
List接口的List.add()方法用于将参数中指定的元素追加到列表的最后。
List接口的List.remove()方法用于从列表中移除参数中的指定元素。
// Java program to reverse the list using List.add()
// and List.remove() method
import java.io.*;
import java.util.*;
class GFG {
public static void main(String[] args)
{
List<Integer> number = new ArrayList<>(
Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8));
System.out.println(
"Reverse order of given List :- ");
for (int k = 0, j = number.size() - 1; k < j; k++)
{
number.add(k, number.remove(j));
}
System.out.println(number);
}
}
输出
Reverse order of given List :-
[8, 7, 6, 5, 4, 3, 2, 1]
时间复杂度: O(n)
辅助空间: O(1)