leetcode950_按递增顺序显示卡牌

 

思路:

模拟一下操作的行为,由于操作的最后,得到的数组是有序的,根据规则:

索引0对应最小的卡片,索引2对应第二最小的卡片,索引4对应第三最小的卡片,等等

用双向队列模拟行为 ,对原数组进行排序,即为最终结果,利用队列保存索引【0,1,2,3...】,第一个索引对应数组最小的数,

第二个索引移动到最后,第三个索引对应第二小的数,第四个索引再次移动到后面......继续操作,直到所有的数字都找到对应的索引。

    public int[] deckRevealedIncreasing(int[] deck) {
		int N = deck.length;
		LinkedList<Integer> queue = new LinkedList();//存索引
		for (int i = 0; i < N; ++i)
			queue.add(i);

		int[] res = new int[N];
		Arrays.sort(deck);          //此時card排好序了
		for (int card : deck) {
			res[queue.pollFirst()] = card;
			if (!queue.isEmpty())
				queue.addLast(queue.pollFirst());  //把第一個索引添加到最後
		}
		return res;
	}

 

全部评论

相关推荐

2024-12-30 22:31
吉首大学 Web前端
小蜗居:看过🟰了解 用过🟰熟悉 学过🟰精通
点赞 评论 收藏
分享
程序员鼠鼠_春招版:都很烂大街,rpc也基本没人问,考研吧,不然就包装一段实习再去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务