leetcode周赛-3379. 转换数组

给你一个整数数组 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 是循环数组,向右移动超过最后一个元素时将回到开头,向左移动超过第一个元素时将回到末尾。

cpp 复制代码
class Solution {
public:
    vector<int> constructTransformedArray(vector<int>& nums) {
        int n=nums.size();
        vector<int> result(n,0);
        for(int i=0;i<n;i++){
            result[i]=nums[(i+(nums[i]%n+n))%n];
        }
        return result;
    }
};

我是fw,区分正负、处理溢出,花了很长时间,经过复盘才发现,当numsi为负数的时候,比如是-k,那么需要左移k步,那么其实就相当于右移动n-k步。

正数:resulti=nums(i+(nums\[i%n))%n];-------->推广到:resulti=nums(i+(nums\[i%n+n))%n];

相关推荐
青 春 记 忆7 小时前
LeetCode 21. 合并两个有序链表|Python 解法详解
python·算法·leetcode·链表
Sagittarius_A*10 小时前
后量子密码|通识认知 03|量子威胁辟谣:Grover 算法对对称密码的影响与误区
算法·信息安全·密码学·量子计算·pqc·后量子密码
QAQo7T11 小时前
Python组蓝桥杯备赛超详细知识点总结笔记_排序算法篇
笔记·python·算法·蓝桥杯·排序算法
千里之行,始于足下sanhai11 小时前
P8686 [蓝桥杯 2019 省 A] 修改数组 - 数字魔法大冒险 题解
c++·算法·动态规划
小星星闪亮登场12 小时前
Codeforces Round 1115 ( Div. 2)
数据结构·c++·算法·贪心算法·排序算法·codeforces
计算机小白一个12 小时前
蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
java·数据结构·算法·蓝桥杯
Loge编程生活12 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程
2601_9571746513 小时前
大模型算法 简单 容易 用这个方法
算法
VALENIAN瓦伦尼安教学设备13 小时前
激光对中仪采购要点
数据库·嵌入式硬件·算法
Forever Nore15 小时前
LeetCode 1 两数之和
算法·leetcode·职场和发展