java数据结构之二--乱序数组自然排序实现的两种方法:面试题中,对一个乱序数组不使用排序算法,但是得到倒数第二个值/得到中位数/得到第n个值之类的问题

之前写了一篇使用LinkedList+TreeMap实现栈的入栈和弹栈功能,并且记录入栈的最小值和最大值的博客。

近来在找工作,看到了很多面试题关于数据结构和算法的。题目类似于:对一个乱序数组不使用排序算法,但是得到倒数第二个值/得到中位数/得到第n个值之类的问题,成功勾引起了我的兴趣。

想了想,使用合适的数据结构来解决这个问题。

一种是使用TreeMap结构—解决特殊的–没有重复数字时候的问题

一种是使用PriorityQueue解决更一般情况下–有重复数字时候的问题

**

  1. 一、使用TreeMap/TreeSet—数组中没有重复数字的时候可以使用

**
比如一个数组:int[]a= {3,4,500,6,101,13,54,75,76,100,10000,100001};
要不使用排序,却得到某个次序的值。
看了几个分享的案例,脑阔疼,自己就自然而然想到了之前使用的TreeMap,因为它可以将放进去的数字按照自然顺序从小到大排列啊,那岂不美哉?还用写什么forEach循环,条件判断?(结果还是要写一点的):
代码如下:

int[]a= {3,4,500,6,101,13,54,75,76,100,10000,100001};
		Map<Integer, Object> treeMap = new TreeMap<>();
		for(int i=0;i<a.length;i++) {
			treeMap.put(a[i], a[i]);
		}
		/*迭代器的方法:
		Iterator<En
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值