AcWing3642:链表合并

Posted 劭兮劭兮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing3642:链表合并相关的知识,希望对你有一定的参考价值。

问题

原题链接:链表合并

解决办法

利用数组辅助完成本题,和前不久做的一道题极其相似,思路大致一样,但是本题代码比较啰嗦的原因是,需要自己实现获取输入内容功能(多半是String类型和int类型的转换),所以,代码量较多,注释的代码是测试的代码。
思路参照博客:
AcWing34:合并两个排序的链表

JAVA代码实现

import java.util.Scanner;

class Main 

	public static void main(String[] args) 
		// TODO Auto-generated method stub
		
		Scanner scanner = new Scanner(System.in);
		
//		获取第一个链表的内容
		String number1 = scanner.nextLine();
		String string1 = scanner.nextLine();
		
//		获取第二个链表的内容
		String number2 = scanner.nextLine();
		String string2 = scanner.nextLine();
		
//		测试scanner获取的数据是否正确
//		System.out.println(number1);
//		System.out.println(string1);
//		System.out.println(number2);
//		System.out.println(string2);
		
//		将链表长度转化为正确的int类型
		int num1 = Integer.parseInt(number1);
		int num2 = Integer.parseInt(number2);
		
//		System.out.println(num1);
//		System.out.println(num2);
		
		String[] array1 = string1.split(" ");
		String[] array2 = string2.split(" ");
		
//		要比较数值的大小,所以我们提前把String数组转化为int数组
		int[] arr1 = new int[num1];
		for(int m = 0;m < num1;m++) 
			arr1[m] = Integer.parseInt(array1[m]);
		
		
		int[] arr2 = new int[num2];
		for(int n = 0;n < num2;n++) 
			arr2[n] = Integer.parseInt(array2[n]);
		
		
//		测试是否转化成功
//		for(int i = 0;i<arr1.length;i++) 
//			System.out.print(arr1[i]);
//		
//	
//		for(int j = 0;j<arr2.length;j++) 
//			System.out.print(arr2[j]);
//		
		
//		创建一个数组用于记录排好序的数组
		int[] res = new int[num1+num2];
		
		int i = 0;
		int j = 0;
		int k = 0;
		while(i < num1 && j < num2) 
			if(arr1[i] < arr2[j]) 
				res[k] = arr1[i];
				i++;
			else 
				res[k] = arr2[j];
				j++;
			
			k++;
		
		
//		当其中一个链表为空时,
		while(i >= num1 && j < num2) 
			res[k] = arr2[j];
			k++;
			j++;
		
		
		while(i < num1 && j >= num2) 
			res[k] = arr1[i];
			k++;
			i++;
		
		

//		输出最终数组的结果
		for(int w=0;w<res.length;w++) 
			System.out.print(res[w]+" ");
		
	
	


小记:
原题链接:链表合并

以上是关于AcWing3642:链表合并的主要内容,如果未能解决你的问题,请参考以下文章

AcWing3642:链表合并

AcWing34:合并两个排序的链表

AcWing34:合并两个排序的链表

AcWing34:合并两个排序的链表

AcWing86:链表中环的入口结点

AcWing86:链表中环的入口结点