2.6力扣每日一题-3379转换数组

简介: 本题要求将循环数组 nums 转换为新数组 result:对每个下标 i,按 nums[i] 正负决定左右移动步数(0 则保持),在循环数组中定位目标下标并赋值。关键在于用 `(i + nums[i]) % n`(配合模运算处理负数)高效计算等价下标。代码简洁,时间复杂度 O(n)。

3379. 转换数组 - 力扣(LeetCode)

视频讲解:https://t.bilibili.com/1166681192552988677?share_source=pc_native

给你一个整数数组 nums,它表示一个循环数组。请你遵循以下规则创建一个大小 相同 的新数组 result

对于每个下标 i(其中 0 <= i < nums.length),独立执行以下操作:

  • 如果 nums[i] > 0:从下标 i 开始,向 移动 nums[i] 步,在循环数组中落脚的下标对应的值赋给 result[i]
  • 如果 nums[i] < 0:从下标 i 开始,向 移动 abs(nums[i]) 步,在循环数组中落脚的下标对应的值赋给 result[i]
  • 如果 nums[i] == 0:将 nums[i] 的值赋给 result[i]

返回新数组 result

注意:由于 nums 是循环数组,向右移动超过最后一个元素时将回到开头,向左移动超过第一个元素时将回到末尾。

示例 1:

输入: nums = [3,-2,1,1]

输出: [1,1,1,3]

解释:

  • 对于 nums[0] 等于 3,向右移动 3 步到 nums[3],因此 result[0] 为 1。
  • 对于 nums[1] 等于 -2,向左移动 2 步到 nums[3],因此 result[1] 为 1。
  • 对于 nums[2] 等于 1,向右移动 1 步到 nums[3],因此 result[2] 为 1。
  • 对于 nums[3] 等于 1,向右移动 1 步到 nums[0],因此 result[3] 为 3。

示例 2:

输入: nums = [-1,4,-1]

输出: [-1,-1,4]

解释:

  • 对于 nums[0] 等于 -1,向左移动 1 步到 nums[2],因此 result[0] 为 -1。
  • 对于 nums[1] 等于 4,向右移动 4 步到 nums[2],因此 result[1] 为 -1。
  • 对于 nums[2] 等于 -1,向左移动 1 步到 nums[1],因此 result[2] 为 4。

提示:

  • 1 <= nums.length <= 100
  • -100 <= nums[i] <= 100

我们先抛开数组下标为非负数这个要求,将nums视为一个向两侧无穷延伸的循环数组。题目说如果nums[i]<0,就向左移动abs(nums[i])位,即左移后的下标为i-abs(nums[i]),即为i+nums[i].

也就是说,无论nums[i]是正或是负,移动后的下标都为i+nums[i],只不过这个i+nums[i]可能大于等于数组的长度或小于0.例如数组长度为4,那么下标1,5,9和下标-3,-7,-11对应的数值是一样的,在这里我们称其为等价的下标。

简化问题:也就是说,我们要解决的问题是,对于一个长度为m的数组nums来说,我们如何找到与i+nums[i]等价的下标,且该下标对nums来说是有效的?

image.png

可见,将x调整为y,只需对m取模,加m,再整体对m取模即可。

Java

class Solution {
   
    public int[] constructTransformedArray(int[] nums) {
   
        int m = nums.length;
        int[] res = new int[m];
        for(int i=0;i<m;i++) {
   
            res[i] = nums[((i + nums[i]) % m + m) % m];
        }
        return res;
    }
}

Go

func constructTransformedArray(nums []int) []int {
   
    m := len(nums)
    res := make([]int,m)
    for i,v := range nums {
   
        res[i] = nums[((i + v) % m + m) % m]
    }
    return res
}

C++

class Solution {
   
public:
    vector<int> constructTransformedArray(vector<int>& nums) {
   
        int m = nums.size();
        vector<int>res(m,0);
        for(int i=0;i<m;i++) {
   
            res[i] = nums[((i + nums[i]) % m + m) % m];
        }
        return res;
    }
};

Python

class Solution:
    def constructTransformedArray(self, nums: List[int]) -> List[int]:
        n = len(nums)
        return [nums[(i + v) % n] for i, v in enumerate(nums)]
目录
相关文章
|
23天前
|
人工智能 测试技术
LLM创造力可以被度量吗?一个基于提示词变更的探索性实验
本文探讨提示词工程为何仍是“玄学”,并通过实验证明:加入明确指令(如“Be as creative as possible”)可显著、可量化地提升LLM输出多样性,效果甚至超过调高温度。研究以embedding距离为代理指标,覆盖13个主流模型,揭示提示词迭代可度量、可预测,为LLM应用从经验走向工程化提供新路径。
98 17
LLM创造力可以被度量吗?一个基于提示词变更的探索性实验
|
15天前
|
人工智能 网络协议 网络安全
2026阿里云OpenClaw/Clawdbot部署+集成iMessage指南:苹果生态AI助手搭建教程
2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借轻量化容器化架构、灵活的跨平台集成能力,成为个人与小型团队打造专属AI助手的首选工具。其支持自然语言指令解析、多任务自动化执行、多终端同步响应的核心特性,完美适配苹果生态用户的办公与生活需求。iMessage作为苹果生态核心的即时通讯工具,覆盖iPhone、Mac、iPad全终端,具备端到端加密、无缝同步的优势,将两者深度对接,可实现“iMessage发指令、AI自动化执行、全终端收结果”的跨场景体验,无需切换APP,随时随地调用AI能力处理文档生成、数据查询、任务提醒等事务。
508 18
|
23天前
|
弹性计算 小程序 固态存储
云服务器租用价格多少钱一年?用于搭建小程序费用清单,2026最新整理
2026年阿里云小程序服务器最新报价:入门级2核2G轻量服务器低至38元/年(含200M峰值带宽、50G系统盘),99元/年ECS经济型实例续费同价;香港地域25元/月起。覆盖GPU、按量付费及带宽/云盘明细,性价比高,适合个人开发者与中小企业快速部署小程序。
367 17
|
21天前
|
域名解析 人工智能 API
不用懂代码?DeepSeek 个人网站搭建,新手0基础一看就会!
通过阿里云计算巢“DeepSeek个人站点-快速部署”服务,用户可以轻松搭建专属DeepSeek网站。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。整个过程简单快捷,无需代码,最快5分钟完成部署,支持多种AI模型如DeepSeek、Qwen-max、Llama等。详细教程涵盖从购买到设置的每一步,确保用户顺利搭建并访问自己的AI网站。
159 9
|
1天前
|
机器学习/深度学习 人工智能 算法
OECD 2026消费金融风险监测框架下的数字欺诈防御研究
本文基于OECD《2026年消费金融风险监测报告》,剖析生成式AI、开放银行与嵌入式金融带来的三大新型风险:算法歧视、深度伪造身份欺诈及API数据泄露。通过技术复现揭示传统风控失效,并提出融合可解释AI、多模态动态认证、零信任架构与联邦学习的韧性防御框架。(239字)
60 20
|
18天前
|
弹性计算 安全 应用服务中间件
阿里云服务器如何部署安装LNMP程序环境?超简单,看完就能上手!
本文详解阿里云ECS部署LNMP环境的两种方式:一是通过系统运维管理控制台“一键安装”扩展程序,快速完成部署;二是手动安装Linux+Nginx+MySQL+PHP,支持Alibaba Cloud Linux/CentOS/Ubuntu,满足WordPress等对配置与安全的定制化需求。含完整步骤、命令及验证方法。
|
24天前
|
存储 人工智能 网络安全
OpenClaw(Clawdbot)阿里云零基础部署,打造QQ社群智能助手,自动化运营全攻略
社群运营常常陷入“重复劳动多、核心价值少”的困境:新人入群反复提问相同问题、高质量讨论被闲聊覆盖、活动报名统计耗时耗力、社群活跃度逐渐下滑。而OpenClaw(曾用名Clawdbot、Moltbot)作为功能强大的开源AI框架,搭配NapCat QQ协议层,能轻松打造一站式QQ社群智能助手,实现智能问答、精华沉淀、活动管理、互动活跃全自动化,让社群运营从“被动应对”变为“主动赋能”。
291 18
|
21天前
|
Linux 测试技术 虚拟化
VMware17安装步骤详解(附虚拟机创建与常见问题解决)
VMware Workstation 17 是功能强大的桌面虚拟化软件,支持在Windows/macOS上创建和运行多个操作系统(如Linux、Win7/10),适用于开发测试、环境搭建等场景。安装需以管理员身份运行,典型安装即可快速启用,附30天试用期。
|
15天前
|
网络协议 应用服务中间件 网络安全
2026阿里云免费SSL证书申请流程|零基础一步到位,超简单
2026年阿里云免费SSL证书(Digicert品牌)申请指南:零基础一步到位!单账号每年可领20张,有效期3个月(非1年)。全程免费,在数字证书管理服务控制台操作——选“个人测试证书”→提交申请→DNS验证(TXT记录)→审核通过后下载PEM/PFX等多格式证书。到期不续费,重新申请即可。
159 6
|
1月前
|
存储 数据采集 安全
微调与安全隐私 —— 大模型落地的合规必修课
本文聚焦大模型微调中的安全与隐私合规风险,系统剖析数据集、训练、输出三大环节的典型隐患(如敏感信息泄露、版权侵权、模型反演等),提出“脱敏+加密+过滤”全流程防护方案,并推荐合规认证平台与实操工具,助力企业实现技术落地与法律合规双保障。(239字)