【LeetCode】950. 按递增顺序显示卡牌

FFMPEG音频开发: Linux下采集摄像头(使用V4L2框架)数据录制成MP4视频保存到本地 一、环境介绍 操作系统介绍:ubuntu 18.04 FFMPEG版本: 4.4.2 摄像头: USB摄像头、虚拟机挂载本机自带摄像头 二、FFMPEG与X264下载编译 X264下载地址: http://www.videolan.org/developers/x264.html FFMPEG下载地址:https://ffmpeg.org/download.html Yasm ... 阅读详情

1.题目描述

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。

最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。

现在,重复执行以下步骤,直到显示所有卡牌为止:

从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。
如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。
如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。
返回能以递增顺序显示卡牌的牌组顺序。

答案中的第一张牌被认为处于牌堆顶部。

 

示例:

输入:[17,13,11,2,3,5,7]
输出:[2,13,3,11,5,17,7]
解释:
我们得到的牌组顺序为 [17,13,11,2,3,5,7](这个顺序不重要),然后将其重新排序。
重新排序后,牌组以 [2,13,3,11,5,17,7] 开始,其中 2 位于牌组的顶部。
我们显示 2,然后将 13 移到底部。牌组现在是 [3,11,5,17,7,13]。
我们显示 3,并将 11 移到底部。牌组现在是 [5,17,7,13,11]。
我们显示 5,然后将 17 移到底部。牌组现在是 [7,13,11,17]。
我们显示 7,并将 13 移到底部。牌组现在是 [11,17,13]。
我们显示 11,然后将 17 移到底部。牌组现在是 [13,17]。
我们展示 13,然后将 17 移到底部。牌组现在是 [17]。
我们显示 17。
由于所有卡片都是按递增顺序排列显示的,所以答案是正确的。
 

提示:

1 <= A.length <= 1000
1 <= A[i] <= 10^6
对于所有的 i != j,A[i] != A[j]

实现原理:

因为之前玩过这个游戏,所以就没有反着推理。
当一套扑克牌 按照 1,2,3,4,5,6…的规律排列时,按照 题目的规律 输出,会得到一个 新序列,新序列的每个值代表一个位置,将 旧序列的值 按新序列的位置放置,就可以得到正常的输出结果。

例如: 旧序列 1 2 3 4 5
按规则输出: 新序列 1 3 5 4 2

结合两个序列 得到 应该的答案:

位置 1 的牌应该是 1
位置 3 的牌应该是 2
位置 5 的牌应该是 3
位置 4 的牌应该是 4
位置 2 的牌应该是 5

得到正常的答案序列 是 1 5 2 4 3

2. 提交:

class Solution {
    public int[] deckRevealedIncreasing(int[] deck) {
        /**
		 * 1. 先将参数 数组 排序
		 */
		Arrays.sort(deck);
		/**
		 * 2 . 拿到 一个 1,2,3,4,5,6,... 的数组 
		 *     用此数组按规则 推算,得到一个 位置数组 
		 *     将 原参数数组的 值 按位置数组的位置,放入新的数组
		 */
		int len = deck.length;
		Integer[] nums = new Integer[len];
		for (int i = 0; i < len; i++) {
			nums[i] = i + 1;
		}
		// 转为数组,为了后期可以删除方便使用
		List<Integer> paramList = new ArrayList(Arrays.asList(nums));
		List<Integer> indexList = new ArrayList<Integer>();
		int j = paramList.size();
		for (int i = 0; i < j - 1; i++) {
			Integer s = paramList.get(0);
			indexList.add(s);
			paramList.remove(0);

			Integer a = paramList.get(0);
			paramList.remove(0);
			paramList.add(a);
		}
		indexList.add(paramList.get(0));
		int[] index = indexList.stream().mapToInt(Integer::valueOf).toArray();
		int[] result = new int[len];
		for (int i = 0; i < len; i++) {
			result[index[i] - 1] = deck[i];
		}
		return result;
    }
}

3. 性能:

在这里插入图片描述

4. Eclipse 调试:

package single100;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Test {
	public static void main(String[] args) {
		int[] deck = { 17,13,11,2,3,5,7 };
		System.out.print("输入:");
		for (int i : deck) {
			System.out.print(i + ",");
		}
		System.out.println();
		System.out.print("输出:");
		int[] result = list(deck);
		for (int i : result) {
			System.out.print(i + ",");
		}
		System.out.println();
	}

	public static int[] list(int[] deck) {
		/**
		 * 1. 先将参数 数组 排序
		 */
		Arrays.sort(deck);
		/**
		 * 2 . 拿到 一个 1,2,3,4,5,6,... 的数组 
		 *     用此数组按规则 推算,得到一个 位置数组 
		 *     将 原参数数组的 值 按位置数组的位置,放入新的数组
		 */
		int len = deck.length;
		Integer[] nums = new Integer[len];
		for (int i = 0; i < len; i++) {
			nums[i] = i + 1;
		}
		// 转为数组,为了后期可以删除方便使用
		List<Integer> paramList = new ArrayList(Arrays.asList(nums));
		List<Integer> indexList = new ArrayList<Integer>();
		int j = paramList.size();
		for (int i = 0; i < j - 1; i++) {
			Integer s = paramList.get(0);
			indexList.add(s);
			paramList.remove(0);

			Integer a = paramList.get(0);
			paramList.remove(0);
			paramList.add(a);
		}
		indexList.add(paramList.get(0));
		int[] index = indexList.stream().mapToInt(Integer::valueOf).toArray();
		int[] result = new int[len];
		for (int i = 0; i < len; i++) {
			result[index[i] - 1] = deck[i];
		}
		return result;
	}

}

6. 性能优化

之前显示时间占用很久,后来考虑是用了 jdk 8的特性,之后用 输出 date 测试了下,确实是 新特性的问题,现在改了下。
只是将 List 转 int[] 的时候用了循环。
提交代码:

class Solution {
    public int[] deckRevealedIncreasing(int[] deck) {
       /**
		 * 1. 先将参数 数组 排序
		 */
		Arrays.sort(deck);
		/**
		 * 2 . 拿到 一个 1,2,3,4,5,6,... 的数组 用此数组按规则 推算,得到一个 位置数组 将 原参数数组的 值
		 * 按位置数组的位置,放入新的数组
		 */
		int len = deck.length;
		Integer[] nums = new Integer[len];
		for (int i = 0; i < len; i++) {
			nums[i] = i + 1;
		}
		// 转为数组,为了后期可以删除方便使用
		List<Integer> paramList = new ArrayList(Arrays.asList(nums));
		List<Integer> indexList = new ArrayList<Integer>();
		int j = paramList.size();
		for (int i = 0; i < j - 1; i++) {
			Integer s = paramList.get(0);
			indexList.add(s);
			paramList.remove(0);

			Integer a = paramList.get(0);
			paramList.remove(0);
			paramList.add(a);
		}
		indexList.add(paramList.get(0));
		int[] index = new int[len];
		for(int i = 0; i < len; i++){
			index[i] = indexList.get(i);
		}
		//int[] index = indexList.stream().mapToInt(Integer::valueOf).toArray();
		//int[] index = new int[]{1,3,5,7,4,2,6};
		int[] result = new int[len];
		for (int i = 0; i < len; i++) {
			result[index[i] - 1] = deck[i];
		}
		return result;
    }
}

性能:
在这里插入图片描述
时间的提升是很明显的啊。

未完待续…

融合Retinex理论与Transformer的YOLOv8低光照目标检测增强方法【YOLOv8】 图像分解:将输入图像分解为光照成分和反射成分。光照估计:估计光照图以消除暗光区域。图像重建:将光照增强后的反射图像重建成最终图像。Retinexformer通过在Transformer中引入Retinex的图像增强思路,使得低光照图像的细节能够得到充分保留。本文提出了一种基于Retinexformer的低光照增强方法,用于改进YOLOv8模型在夜间和低光照环境下的目标检测性能。 阅读详情

相关推荐

GD32F307 USB主机模式 外接U盘升级 调试问题记录

在移植USB驱动做主机读U盘时遇到的问题。 问题1、移植USB驱动完成后,插入U盘,一直在 usbh_core_task 的默认case 和测试case中反复执行无法执行到后面的连接及以后得步骤。 问题2、在 usbh_core_task 函数中,一直卡在枚举的case,无法执行下面操作。具体卡在urb_wait的while循环无法跳出。

LGC_764385701的博客 1949

leetcode-950

这题用循环双端队列解。 class MyCircularDeque { public: MyCircularDeque(int k) { m_iCapacity = k; queue = new int[m_iCapacity]; m_iSize = 0; front = 0; rear = 0; } ~MyCircularDeque() { delete[]queue; queue = NULL; } bool insertFront(int value) {

weixin_40428368的博客 251

2024年上市公司ESG评级全解析:六大权威数据源横向对比与应用指南

本文深度解析2024年国内主流ESG评级数据源,包括华证、商道融绿、Wind、富时罗素和彭博,横向对比其覆盖范围、评分逻辑与应用侧重点。文章提供实战指南,帮助投资者与企业根据投资决策、风险管理和学术研究等不同场景,精准选择并有效应用ESG数据,实现从概念到实用分析工具的转变。

weixin_29229055的博客 312

Leetcode950. Reveal Cards In Increasing Order按递增顺序显示卡牌

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停...

Ha12312的博客 416

MAPLAB X IDE仿真调试

一、开发环境 操作系统:Windows 10 调试工具:Pickit3 单片机型号:PIC24FJ32GA002 二、操作步骤 1、连接Pickit3仿真器于单片机对应的烧写口如图示: 2、点击调试项目进入调试模式,这时底下输出框显示"运行"代表成功进入调试模式。 3、选择断点,该IDE只支持两个断点,使用超过两个时,超过的断点亮灰色代表无效。设置好断点后需暂停然后再重新点击运行才能生效。可以看到在断点处有绿色光标。 ...

RealHero的博客 5084

STM32F030F4P6实战:LL库+DMA驱动WS2812全流程(附避坑指南)

本文详细介绍了如何使用STM32F030F4P6的LL库和DMA驱动WS2812 LED灯带的全流程,包括硬件选型、CubeMX配置、LL库与DMA关键实现、数据格式转换及调试技巧。特别提供了避坑指南,帮助开发者避免常见错误,提升开发效率。

weixin_29194693的博客 484

LeetCode - 950 卡牌抽一底一使之有序【排序】

950. 按递增顺序显示卡牌 示例: 输入:[17,13,11,2,3,5,7] 输出:[2,13,3,11,5,17,7] 解释: 我们得到的牌组顺序为 [17,13,11,2,3,5,7](这个顺序不重要),然后将其重新排序。 重新排序后,牌组以 [2,13,3,11,5,17,7] 开始,其中 2 位于牌组的顶部。 我们显示 2,然后将 13 移到底部。牌组现在是 [3,11,5,17,7,13]。 我们显示 3,并将 11 移到底部。牌组现在是 [5,17,7,13,11]。 我们显示 5

MaseratiD的博客 377

Windows 10下用Python 3搞定Android源码下载:最新repo工具避坑指南

本文详细介绍了在Windows 10系统上,使用Python 3和官方最新repo工具下载Android源码的完整流程。文章提供了从Git安装、环境配置到repo工具初始化、同步加速及常见错误排查的避坑指南,帮助开发者高效搭建稳定的源码下载环境。

weixin_29266749的博客 436

leetcode - 950. Reveal Cards In Increasing Order

leetcode - 950

sinat_41679123的博客 1315

S7-1200 Modbus TCP客户端配置实战:从基础设置到数据交互详解

本文详细介绍了S7-1200 Modbus TCP客户端的配置方法,从基础设置到数据交互的完整流程。涵盖硬件准备、TIA Portal配置、MB_CLIENT指令参数详解、数据缓冲区管理及实战测试,帮助工程师快速掌握西门子PLC与Modbus TCP通信的关键技术。

fire9的博客 310

PTrade数据交互全流程详解:从本地文件上传到定时导出交易数据

本文详细解析了PTrade量化交易平台的数据交互全流程,涵盖从本地文件自动上传交易指令到定时导出成交数据的完整链路。通过文件媒介实现本地策略与云端实盘的安全、稳定对接,并提供了构建自动化、稳健数据流水线的实战配置方案与代码示例,助力量化工作流平滑过渡至实盘。

gg901的博客 882

[leetcode]按递增顺序显示卡牌

950. 按递增顺序显示卡牌 牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递...

简 863

【深度学习】Progressive Distillation for Fast Sampling of Diffusion Models

这种方法通过迭代地将一个需要较多步骤的模型(称为教师模型)蒸馏成一个需要较少步骤的学生模型,每次迭代都将采样步骤减半,直到达到所需的采样步骤数量。通过渐进式蒸馏,论文将原始需要8192步采样的模型成功蒸馏为只需4步采样就能取得接近的生成质量的新模型,大幅提高了扩散模型的推理效率。这篇论文提出了一种"渐进式蒸馏"(Progressive Distillation)的方法,来大幅降低用于生成对抗网络(GAN)的扩散模型(Diffusion Model)在推理阶段的采样步数,从而提高其推理效率。

q742971636的博客 1786

力扣950.按递增顺序显示卡牌

【代码】力扣950.按递增顺序显示卡牌。

Pisasama的博客 269

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[LeetCode解题报告] 950. 按递增顺序显示卡牌

队列

liuliangcan的博客 139

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LeetCode 950. 按递增顺序显示卡牌

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。返回能以显示卡牌的牌组顺序。答案中的第一张牌被认为处于牌堆顶部。我们得到的牌组顺序为 [17,13,11,2,3,5,7](这个顺序不重要),然后将其重新排序。重新排序后,牌组以 [2,13,3,11,5,17,7] 开始,其中 2 位于牌组的顶部。我们显示 2,然后将 13 移到底部。牌组现在是 [3,11,5,17,7,13]。

m0_56090828的博客 519

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode 950 按递增顺序显示卡牌

按递增顺序显示卡牌 类似约瑟夫环的操作 class Solution { public: vector<int> deckRevealedIncreasing(vector<int>& deck) { //约瑟夫环的使用模拟抽牌就行了,栈模拟放牌 sort(deck.begin(),deck.end()); ...

zhaohoutao的博客 245

LeetCode. 950 按递增顺序显示卡牌

按递增顺序显示卡牌 题目链接 牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递...

码农在途的博客 362

LeetCode950:按递增顺序显示卡牌

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递增顺序显示卡牌的牌组顺序...

qq_36214481的博客 656

leetcode 950. 按递增顺序显示卡牌

leetcode 950. 按递增顺序显示卡牌 文章目录leetcode 950. 按递增顺序显示卡牌一、题目1.题目描述2.基础框架3.解题思路4.知识点 一、题目 原题链接:950. 按递增顺序显示卡牌 1.题目描述 牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在

进击的code儿 256

按递增顺序显示卡牌——Leetcode950

leetcode950——按增序显示卡牌(循环队列,标志位的使用,向量vector的基本操作) //思路: //翻开-置底的操作,相当于对新数组间隔取值 //在第一轮翻到底之后,被置底的牌依旧是按照下标递增的顺序排列的 //重复执行前2步,直到没有牌 //本质: //将数组变为”循环队列“,并且间隔取值,取过的位置被移除,且要求取值是升序的 //代码: //(1)如何将数组变成循环队列, 使用...

chicken3wings的博客 339

【力扣】950:按递增顺序显示卡牌

题目描述 牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递增顺序显示卡牌的牌组顺序...

Heart_for_Ling的博客 605

LeetCode950. 按递增顺序显示卡牌

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递增顺序显示卡牌的牌组顺序。 答案中...

wjgxajh的博客 221

leetcode950.按递增顺序显示卡牌

1.题目描述 牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递增顺序显示...

没有感情的刷题机器 399

【LeetCode每日一题】——950.按递增顺序显示卡牌

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递增顺序显示卡牌的牌组顺序。 答案中的第一张牌被认为处于牌堆顶部。

IronmanJay 401

【力扣】950. 按递增顺序显示卡牌

问题描述 牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。 最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。 现在,重复执行以下步骤,直到显示所有卡牌为止: 从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。 如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。 如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。 返回能以递增顺序显示卡牌的牌组顺序。 答案中的第一张牌被认为处于牌堆顶部。 示例 输入:[17,13,11,2,3,5,7.

scut_lyq00 299
上一篇: 【LeetCode】1021. 删除最外层的括号
下一篇: 【JDK】Linux修改jdk不生效
jy0921_
博客等级 码龄11年 329粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值