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;
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值