Java BigInteger+排序(感觉很神奇)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39627843/article/details/82878035

本人在搞ACM

今天遇到了一个题,数据有点大,要开 unsigned long long,但是我没想到,就想去用Java的BigInteger,但是输出要求按顺序,当时还在想BigInteger怎么排序啊,是不是要自己存到数组里,自己写个排序啊,那多麻烦,写不好就超时。

然后后来结合数据结构一想,有自动排序的数据结构啊,Set里面有个TreeSet,也就是红黑树,突然就灵机一动,最后终于AC。

其实代码超级简单,下面说一下怎么排序吧。

其实就是插入到TreeSet里面,到时输出就行了

import java.math.*;
import java.util.*;
public class Main {

	public static void main(String[] args) 
	{
		Set<BigInteger> s = new TreeSet<BigInteger>();
		Scanner in = new Scanner(System.in);
		BigInteger item;
		while( T--!= 0 )
		{
			item = in.nextBigInteger();	//输入大整数
			s.add(item);				//加到 TreeSet里面
		}
		Iterator it = s.iterator();		
		while( it.hasNext() )		//输出
			System.out.println(it.next());
	}

}

怎么样,是不是超级简单,而且都不用自己重载比较函数。

但是很遗憾,Java库里面没有multiset,不能允许重复,所以上面的方法还是有局限性的,但是,我们稍微动一下脑筋,还是可以用的。

如果需要重复输出,我们就记录重复了多少次嘛,用map<BigInteger,int> 来记录,这样差不多就解决了。

猜你喜欢

转载自blog.csdn.net/qq_39627843/article/details/82878035