从10进制到1000进制:一场数字的盛宴

news2024/11/19 17:46:14

在这里插入图片描述

本篇博客会讲解力扣“1920. 基于排列构建数组”的解题思路,这是题目链接。

先来审下题:
在这里插入图片描述
以下是输出示例:
在这里插入图片描述
在这里插入图片描述
以下是提示:
在这里插入图片描述
相信读完题的你已经感到没啥意思了,感觉做这道题就是在浪费时间。但是还是建议你看下去,接下来会有一个很有意思的思路。在讲解这个有意思的思路之前,先按照正常的思路实现一下:

int* buildArray(int* nums, int numsSize, int* returnSize) {
	int* ret = (int*)malloc(sizeof(int) * numsSize);
	*returnSize = numsSize;

	// 根据指定规则,构建数组
	for (int i = 0; i < numsSize; ++i)
	{
		ret[i] = nums[nums[i]];
	}

	return ret;
}

在这里插入图片描述

这样就过了。事实上,我更推荐这个正常的思路。不过这个思路开辟了一个新的数组,有没有什么手段,直接在原数组上操作呢?

你可能会问:怎么可能?难道我们要同时在一个数组中存储原数据和结果数据?

答案是:是的!类比一下:假设我们要存储的数据是10以内的,那么用一个十进制数就能够存的下了。比如:37就代表了2个数,一个是37%10=7,另一个是37/10=3。

而本题中的数据是1000以内的,所以可以用“1000进制”来存储。我们规定一个数n,n%1000代表原数据,而n/1000代表结果数据。那么我们就可以遍历数组,对nums[i]做如下操作:

nums[i] += 1000 * (nums[nums[i]] % 1000);

在nums[i]操作之前,nums[i]的值就是它本身,可以使用nums[nums[i]]找到其中的原数据,但是还要%1000。找到该数据后,还要存储到nums[i]中,就*1000再加到nums[i]上即可。实际拿出结果数据,只需要/1000

具体实现的代码如下:

int* buildArray(int* nums, int numsSize, int* returnSize){
    // nums[i]<1000,故采取1000进制
    // nums[i]%1000为原来数据
    // nums[i]/1000为结果数据
    for (int i = 0; i < numsSize; ++i)
    {
        nums[i] += 1000 * (nums[nums[i]] % 1000);
    }

    // 取出结果数据
    for (int i = 0; i < numsSize; ++i)
    {
        nums[i] /= 1000;
    }

    *returnSize = numsSize;
    return nums;
}

在这里插入图片描述
这样也能过。

总结

  1. 常规思路没什么好说的。
  2. 如果我们想把两个1000以内的数存储到一块空间中,可以使用1000进制。

感谢大家的阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/516864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git保姆级教程(概述、理论、指令、创建及代码初始化完整步骤、分支与冲突、遇到的问题)

目录 版本控制安装配置理论部分项目创建及克隆创建全新仓库克隆远程仓库 文件操作理论实操 使用码云分支与冲突实操说明 遇到的问题vscode配置问题vscode克隆慢的问题 后记 版本控制 概述&#xff1a; 版本迭代&#xff0c;更新速度快&#xff0c;于是需要版本管理器。 作用&…

Python大厂经典面试题附答案,提前做好准备

对于大部分Python学习者来说&#xff0c;基础核心知识基本已经掌握了&#xff0c;但"纸上得来终觉浅,绝知此事要躬行"&#xff0c;要想完全掌握Python&#xff0c;还得靠实践应用。 比如面试的时候&#xff0c;面试官会出其不意的问一些问题&#xff0c;今天给大家分…

浅谈月出月落和月相的计算方法以及替代工具 - 月出月落和月相 API

引言 如果你想知道精确的月出月落时间&#xff0c;又或者你想设计一个月出月落时间查询的应用&#xff0c;又或者你只是好奇点进来了&#xff0c;还是可以过来围观一下涨涨知识&#xff0c;今天想跟大家聊一聊的是月出月落的计算方法以及替代工具 - 月出月落和月相 API 。 月…

污水除磷主要方法,磷酸盐的深度去除,正磷、次磷、亚磷树脂吸附

化学沉淀法除磷工艺虽除磷效率相对较好&#xff0c;但消耗化学药剂并产生大量的化学污泥&#xff0c;处理成本相对昂贵&#xff1b;而传统的生物处理工艺操作简单&#xff0c;但磷去除效率较低&#xff0c;难以满足出水要求。 Tulsimer A-107 是一款专门开发的&#xff0c;基于…

win10中rclone挂载minio的多实例安装方式

1.下载rclone安装包&#xff0c;复制多个.exe并重命名 2.1添加rclone1server.xml <service><id>rclone1</id><name>rclone1</name><description>rclone1service</description><executable>rclone</executable><argum…

有没有中国版的chatGPT?

ChatGPT是一个基于人工智能的聊天机器人&#xff0c;它可以通过自然语言处理技术与用户进行交互和对话。ChatGPT的目的是为用户提供便捷的问答服务和娱乐&#xff0c;它可以回答各种问题&#xff0c;例如天气、新闻、历史、文化、科技、娱乐等等。ChatGPT的核心技术是基于GPT模…

AOP的工作流程和核心概念及代理对象

1. 工作流程及核心概念 Spring容器启动读取所有切面配置中的切入点&#xff0c;未配置的切入点不进行读取 初始化bean&#xff0c;判断bean对应的类中的方法是否匹配到任意切入点 匹配成功&#xff1a;在Spring框架中&#xff0c;Bean初始化时会通过扫描程序中的带有特定注解的…

【学习笔记】低速数字输入电路

1、方案设计&#xff1a;单通道、单向、反相器 该电路采用单通道&#xff0c;单向光耦&#xff0c;只支持漏型输入&#xff0c;电路的输入端压差满足24V DC10%(21.6V DC-26.4V DC)&#xff0c;输出端电压在0~3.3V范围摆动。 1.1关键技术规格 1.2具体原理图 1.3电路原理详解 …

直接使用ChatGPT的方法

ChatGPT是一个基于人工智能的聊天机器人&#xff0c;它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术&#xff0c;包括深度学习和神经网络&#xff0c;以便更好地理解用户的意图和回答用户的问题。 ChatGPT可以回答各种问题&#xff0c;包括但不限于常见问…

高效学习传感器|霍尔式传感器

01、霍尔式传感器的工作原理 1●霍尔效应 霍尔式传感器的物理基础是霍尔效应。如图1所示&#xff0c;在一块长度为l、宽度为b、厚度为d的长方体导电板上&#xff0c;左、右、前、后侧面都安装上电极。在长度方向上通入电流I&#xff0c;在厚度方向施加磁感应强度为B的磁场。 ■…

并发编程13:邮戳锁StampedLock

文章目录 13.1 关于锁的面试题13.2 简单聊聊ReentrantReadWriteLock13.2.1 是什么&#xff1f;13.2.2 特点 13.3 面试题&#xff1a;有没有比读写锁更快的锁&#xff1f;13.4 邮戳锁StampedLock13.4.1 是什么&#xff1f;13.4.2 它是由饥饿问题引出13.4.3 StampedLock的特点13.…

【Linux】IO多路转接-select

文章目录 多路转接IO模型I/O多路转接-selectselect初识select函数select的核心功能fd_set的执行流程select就绪条件基于select的服务器Sock.hppSelect_server.cpp存在的问题 select的优点select的缺点select的适用场景 多路转接IO模型 Linux下多路转接的方案常见的有三种&…

人群归因分数(Population Attributable Fraction, PAF):概念、简单计算案例

专注系列化、高质量的R语言教程 推文索引 | 联系小编 | 付费合集 本篇目录如下&#xff1a; 1 人群归因分数 1.1 相对风险度1.2 人群归因分数2 案例 2.1 示例数据2.2 计算案例12.3 计算案例22.4 计算案例33 总结 1 人群归因分数 人群归因分数&#xff08;Population Attributab…

100G CFP光模块类型应用场景详解

目前&#xff0c;全球电信行业平稳发展&#xff0c;宽带用户稳定增长&#xff0c;随着大数据市场的迅猛发展&#xff0c;骨干网、接入网和数据中心建设均需采购大量的光通信产品&#xff0c;从而给光模块行业带来了全新的市场机遇。如今&#xff0c;100G光模块已成为市场发展的…

最新DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

载誉前行!北大青鸟课工场蝉联中国高校计算机教育MOOC联盟会员单位!

近日&#xff0c;北大青鸟旗下的大学生专属品牌课工场喜获殊荣&#xff0c;蝉联中国高校计算机教育MOOC联盟会员单位。这是对北大青鸟课工场一直以来在职业教育领域的卓越表现的肯定&#xff0c;也是对北大青鸟课工场品牌价值的进一步提升。 作为中国高校计算机教育MOOC联盟的会…

JavaScript全解析-面向对象

类语法的书写 ●在 ES6 的语法标准中, 管构造函数不叫做构造函数了, 叫做 类 ●语法: class 类名 {constructor () { // 书写属性 } 书写原型上的方法 方法名 () {} } // ES6 类的语法class Person {// 等价于 ES5 的构造函数体constructor(name) {this.name name}// 直接书写…

Protobuf详解

文章目录 Protobuf是什么传输协议类比 Protobuf协议语法Protobuf类型Protobuf编译器下载配置环境变量 编写一个入门程序 Java是绝大多数人最常用的编程语言&#xff0c;那么作为Java开发如何学习protobuf呢&#xff1f; 步骤如下&#xff1a; 1.下载并安装 Protocol Buffers 工…

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) - 红帽企业 Linux 9.2 发布

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) 红帽企业 Linux 9.2 请访问原文链接&#xff1a;https://sysin.org/blog/rhel-9/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 红帽企业 Linux 9 红帽企业 Linux 9.…

把握协作机器人智能、灵活、安全三大矩阵

原创 | 文 BFT机器人 引言 协作机器人是一种能够和人类工作在同一空间的机器人&#xff0c;能够协同完成任务&#xff0c;为制造业和其他领域提供了更高效和灵活的解决方案。 目前&#xff0c;协作机器人市场正在迅速增长&#xff0c;因为越来越多的制造业和其他领域需要自动化…