每日一练:轮转数组

news2024/9/20 14:44:02

一、题目要求

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:

输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]

示例 2:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释: 
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]

提示:

  • 1 <= nums.length <= 105
  • -231 <= nums[i] <= 231 - 1
  • 0 <= k <= 105

进阶:

  • 尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
  • 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?

二、解法1 O(N) 执行时间长,内存消耗高

数组轮转的过程如下:

        当数组长度等于k时,数组正好不变,所以取 (k%nums.size()) ;

        我们用一个数组tmp先保存轮转到前面的数组片段,最后把剩下的加到后面即可。

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int _k = k%nums.size();
        vector<int> tmp;
        for(int i = nums.size()-_k;i < nums.size();i++)
        {
            tmp.emplace_back(nums[i]);
        }
        for(int i = 0;i < nums.size()-_k;i++)
        {
            tmp.emplace_back(nums[i]);
        }
        nums = tmp;
    }
};

三、解法2-数组翻转 O(N)

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        k%=nums.size();
        reverse(nums.begin(),nums.end());
        reverse(nums.begin(),nums.begin()+k);
        reverse(nums.begin()+k,nums.end());
    }
};

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

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

相关文章

hive时间函数

一、随机示例&#xff08;想到哪里写哪里&#xff09; 1.系统时间函数 查询 select current_timestamp --当前格式化时间,current_date --当前格式化日期,unix_timestamp() --当前unix时间戳 结果&#xff1a; 2.时间函数转换 查询 --将时间戳转化为格式化时间 sel…

微片水凝胶如何用于4D生物打印?快来了解一下!

大家好&#xff0c;今天我们来聊聊一项4D 活细胞生物打印技术——《Jammed Micro-Flake Hydrogel for 4D Living Cell Bioprinting》发表于《Advanced Materials》。在组织器官再生应用中&#xff0c;构建具有复杂几何形状和功能的载细胞结构至关重要。而水凝胶基4D生物墨水的发…

免费 U 盘数据恢复 - 用 4 种免费方法从随身U 盘恢复文件

如何在不使用软件的情况下从 USB 驱动器恢复已删除的文件&#xff1f;如何取消删除 USB 闪存驱动器&#xff1f;首先&#xff0c;不要对拇指驱动器进行任何进一步的更改。然后下载奇客数据恢复&#xff0c;这是一款免费的U 盘恢复工具&#xff0c;能够从各种问题中恢复笔式驱动…

网络层协议-ARP协议

网络层协议-ARP协议 1&#xff09;概述 ARP&#xff1a;地址解析协议&#xff0c;作用&#xff1a;根据IP地址查询MAC地址 数据包发送前需要进行封包&#xff0c;在数据链路层需要封装源mac地址是自己的mac&#xff0c;目的mac地址是别人&#xff0c;但是不知道别人的mac地址…

西门子WinCC开发笔记(一):winCC西门子组态软件介绍、安装

文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142060535 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、Op…

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

为什么RAG对下一代AI开发至关重要

RAG&#xff08;检索增强生成&#xff09;是一种突破性技术&#xff0c;它将信息检索与文本生成相结合&#xff0c;以提高人工智能系统的知识和准确性。利用 RAG 可以帮助开发人员确保应用程序响应具有最丰富的上下文和准确性&#xff0c;因为它可以访问原始模型训练之外的精选…

解决samba无权限创建文件问题

将我服务器利用samba工具映射到到电脑后&#xff0c;没有权限在特定的文件里写文件&#xff0c;比如在mcu这个文件夹里面没有写文件的权限。 查看mcu文件夹的用户属性&#xff0c;属于root属性。 rootzwzn2064-CVN-Z690D5-GAMING-PRO:/home/zwzn2064# ls -ll total 9714860 dr…

MySQL 自学笔记(入门基础篇,含示例)

目录 一、基础1.变量2.运算符 二、数据库与表1.创建数据库2.表的增删与修改&#xff08;1&#xff09;表的创建与删除&#xff08;2&#xff09;表的修改&#xff08;3&#xff09;其他指令 3.属性约束4.数据操作&#xff08;1&#xff09;数据更新&#xff08;2&#xff09;数…

Hive任务优化参数整理

Hive本身是个基于hdfs的结构化数据管理工具&#xff0c;虽然在后面的发展中允许底层接入其他的数据源&#xff0c;比如第三方数据服务这种基础架构&#xff0c;但是它从立意上来说&#xff0c;它不适合用来做高性能查询引擎&#xff0c;反而在传统离线数据仓库中它有着自身的优…

在连通无向图中寻找正反向各通过每条边一次的路径(中国邮递员问题)

在连通无向图中寻找正反向各通过每条边一次的路径(中国邮递员问题) 引言问题定义算法思路具体步骤第一步:找出所有奇度顶点第二步:将奇度顶点配对,并添加最短路径第三步:构造欧拉回路伪代码C语言实现引言 在图论中,中国邮递员问题(Chinese Postman Problem, CPP)是一…

高精度E4990A参数资料keysight是德e4990a阻抗分析仪

Keysight E4990A 阻抗分析仪的规格&#xff1a; 工作频率选项&#xff1a; 20 Hz 至 10 MHz20 Hz 至 20 MHz20 Hz 至 30 MHz20 Hz 至 50 MHz20 Hz 至 120 MHz选项分别为 010 / 020 / 030 / 050 / 120 测量参数&#xff1a;lZl、lYl、O、R、X、G、B、L、C、D、Q、复合 Z、复合…

DBA 的 AI 助手 | MySQL 清理 undo log 居然用了 10 个小时?

社区王牌专栏《一问一实验&#xff1a;AI 版》全新改版归来&#xff0c;得到了新老读者们的关注。其中不乏对 ChatDBA 感兴趣的读者前来咨询&#xff0c;表达了想试用体验 ChatDBA 的意愿&#xff0c;对此我们表示感谢 &#x1f91f;。 目前&#xff0c;ChatDBA 还在最后的准备…

keil调试技巧 keil中的debug调试技巧单片机调试技巧 定位单片机程序异常位置 定位程序异常错误原因计算程序执行时间多少

单片机常用调试技巧(B站UP分享) 如何查看程序运行时间 使用Event Recorder 组件 查看运行时间 https://blog.csdn.net/twx11213030422/article/details/114013796 https://blog.csdn.net/weixin_43866583/article/details/125874888?spm1001.2101.3001.6661.1&utm_med…

大数据开发概论

大数据开发概论 文章目录 大数据开发概论大数据定义大数据概念计算机组成原理软件和硬件概述操作系统 大数据定义 大数据(Big Data)&#xff0c;是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;因此需要新处理模式&#xff0c;该处理模式就…

SpinalHDL之数据类型(二)

本文作为SpinalHDL学习笔记第五十五篇,介绍SpinalHDL的Bits数据类型。 目录: 1.描述(Description) 2.声明(Declaration) 3.操作符(Operators) 1.描述(Description) Bits类型对应于没有算数意义的bits向量。 2.声明(Declaration) 声明bit向量的语法如下所⽰:([]中为可填…

让图片变成动画,@keyframes:动画制作

keyframes被称为关键帧&#xff0c;其类似于Flash中的关键帧。在CSS3中其主要以“keyframes”开头&#xff0c;后面跟着是动画名称加上一对花括号“{…}”&#xff0c;括号中是一些不同时间段样式规则。 语法&#xff1a;keyframes animationname {keyframes-selector{css-styl…

Windows terminal使用说明

1 terminal基本介绍 1 下载 从微软商店上下载的方式网速比较慢&#xff0c;一种直接的方式是直接用命令行运行命令 winget install --idMicrosoft.WindowsTerminal -e# Window Terminal 安装以及使用(2021最新) 2 ssh配置 # 使用Windows Terminal进行SSH登录 1 通过label…

网安学习与木马病毒

一、网安知识学习大点(B站大学) 现状&#xff1a;掌握基本的编程思想、了解过网络知识、听说过一些网安的东西 0、法律 1、操作系统&#xff08;Windows和Linux&#xff09; 2、数据通信&#xff08;网络&#xff09; 3、数据库&#xff08;mysql&#xff09; 4、一门编程…

高效诊断Linux性能问题

从uptime命令开始&#xff1b;这里的关键指标是平均负载&#xff0c;它显示了过去 1分钟&#xff0c;5分钟和15分钟内正在运行或等待资源的进程平均数量&#xff1b;如果这些数字持续高于CPU内核数&#xff0c;则可能表明进程正在争夺资源&#xff0c;提示我们使用其他工具深入…