Leetcode.189 轮转数组

news2024/12/24 20:55:06

题目链接

Leetcode.189 轮转数组

题目描述

给你一个数组,将数组中的元素向右轮转 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 < = n u m s . l e n g t h < = 1 0 5 1 <= nums.length <= 10^5 1<=nums.length<=105
− 2 31 < = n u m s [ i ] < = 2 31 − 1 -2^{31} <= nums[i] <= 2^{31 - 1} 231<=nums[i]<=2311
0 < = k < = 1 0 5 0 <= k <= 10^5 0<=k<=105

分析:

可以通过以下三步,本地修改达到目的:

  • 第一步将整个数组逆转
  • 将 [ 0 , k - 1 ] 范围的元素逆转
  • 将 [ k , n - 1 ] 范围的元素逆转

在这里插入图片描述

  • 时间复杂度: O ( n ) O(n) O(n)

C++代码

class Solution {
public:
    void reverse(vector<int>& nums,int l,int r){
        for(int i = l,j = r;i < j;i++,j--){
            swap(nums[i],nums[j]);
        }
    }

    void rotate(vector<int>& nums, int k) {
       int n = nums.size();
       k %= n;
       reverse(nums,0,n-1);

       reverse(nums,0,k-1);
       reverse(nums,k,n-1);
    }
};

Java代码

class Solution {
    public void rotate(int[] nums, int k) {
        int n = nums.length;
        k = k % n;
        if(n<2||k==0) return;
        swap(0,n-1,nums);
        swap(0,k-1,nums);
        swap(k,n-1,nums);
    }

    public void swap(int i,int j,int[] nums){
        while(i<j){
            int tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
            i++;
            j--;
        }
    }
}

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

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

相关文章

数据分析师最佳选择,帆软自研函数计算满足BI复杂场景需求

‍‍数据智能产业创新服务媒体——聚焦数智 改变商业伴随着数字经济的加快推进和企业数字化转型的不断深入&#xff0c;数据时代正在朝我们走来。越来越多的企业管理者已经意识到数据的重要性&#xff0c;数据分析和商业智能也成为管理决策的重要辅助工具&#xff0c;由此而生…

几个潜在的AI科研助手

最近看到一个新闻说ChatGPT被某科研文章列为作者之一。以自然语言处理和深度学习为基础的人工智能在语言修改润色和翻译方面表现优异&#xff0c;似乎还将改变一些传统的论文阅读和写作方式。本文记录几个最近了解到的几个工具。Scispace地址&#xff1a;https://typeset.io/搜…

详细解析各种TCP漏洞攻击方式及防御方法

TCP/IP攻击是利用IP地址并不是出厂的时候与MAC固定在一起的&#xff0c;攻击者通过自封包和修改网络节点的IP地址&#xff0c;冒充某个可信节点的IP地址&#xff0c;进行攻击。 由于TCP/IP协议是Internet的基础协议&#xff0c;所以对TCP/IP协议的完善和改进是非常必要的。TCP…

Redis 异地双活实战

本文主要讲述异地双活方案redis的热备、双写、双向同步的区别和优劣势。并且说明了双写同步方案中redis集群主从数据同步的过程&#xff0c;以及中间件方案遇到的部分问题点&#xff0c;说明最终方案的实现思路和方案。 redis的双活方案无非有以下三种&#xff1a;热备&#xf…

是否只能搞底层才能成为技术大神?

hi&#xff0c;大家好&#xff0c;我是大师兄alex&#xff0c;想必大家经常听到&#xff0c;想要长远发展&#xff0c;必须要往底层走&#xff0c;技术大神都是搞底层的&#xff0c;你会看到很多人一旦想变得硬核&#xff0c;都喜欢展现自己搞过一些底层技术&#xff0c;比如体…

配置热更新/支持 Reload、QUIC 桥接再升级

12 月&#xff0c;NanoMQ 继续保持稳步更新&#xff0c;最新的 0.15 版本将于本月初发布。这一版本增加了配置热更新功能和 Reload 命令&#xff1b;MQTT over QUIC 桥接再次得到升级&#xff0c;增加了拥塞控制和 QoS 消息优先传输&#xff1b;另外也为上一个版本新增的 HOCON…

2003-2021年高铁线路信息数据

2003-2021年高铁线路信息数据 1、时间&#xff1a;2003-2021年 2、指标&#xff1a; 高铁线路名称、起点名、终点名、开通时间、线路长度(km)、设计速度(km/h&#xff09;、沿途主要车站 3、指标说明&#xff1a; 高铁一般指高速铁路。 高速铁路&#xff0c;简称高铁&…

基于 K8s 的 MySQL 数据持久化存储

目录一、步骤二、实践2.1 创建 PV 和 PVC2.2 部署 MySQL 服务2.3 创建测试数据2.4 模拟节点宕机2.5 数据一致性验证FAQ一、步骤 &#xff08;1&#xff09;创建 PV 和 PVC。 &#xff08;2&#xff09;部署 MySQL 服务。 &#xff08;3&#xff09;向 MySQL 添加数据。 &am…

什么是Vue、Vue开发的方式、Vue的基本指令

一、什么是Vue 1. 前端技术的发展&#xff08;html、CSS、JavaScript&#xff09; ​ &#xff08;1&#xff09;jQuery&#xff1a;是对JavaScript进行了封装&#xff0c;使得操作DOM、事件处理、动画处理、ajax交互变得非常简洁、方便。是JavaScript的库。 ​ &#xff08…

贴吧低代码高性能规则引擎设计

作者 | 贴吧UEG技术组 导读 本文首先介绍了规则引擎的使用场景&#xff0c;引出贴吧规则引擎。从组件、变量、规则、处置四个模块介绍了规则引擎的组成部分&#xff0c;同时对最终规则文件的编译过程做了详细介绍。为了做到低代码&#xff0c;在规则配置上做到平台化&#xff0…

2022第十一届中国创新创业大赛全国总决赛在深圳举办

为深入贯彻党的二十大精神和创新驱动发展战略&#xff0c;强化企业科技创新主体地位&#xff0c;支持企业融合创新&#xff0c;推进科技型创新型企业遴选和培育&#xff0c;加大金融对硬科技企业的支持力度&#xff0c;营造有利于科技型中小微企业成长的环境&#xff0c;推动创…

Nuxt.js

Nust.js介绍 Nust.js介绍 移动互联网的兴起促进了web前后端分离开发模式的发展&#xff0c;服务端只专注业务&#xff0c;前端只专注用户体验&#xff0c;前端大量运用的前端渲染技术&#xff0c;比如流行的vue.js、react框架都实现了功能强大的前端渲染。但是&#xff0c;对…

深入探索Linux虚拟化KVM-Qemu分析之CPU虚拟化

说明&#xff1a; KVM版本&#xff1a;5.9.1QEMU版本&#xff1a;5.0.0工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 本文围绕ARMv8 CPU的虚拟化展开&#xff1b;本文会结合Qemu KVM的代码分析&#xff0c;捋清楚上层到底层的脉络&#xff1b;本文会提供一…

MYSQL对千万级数据的快速迁移

MYSQL对千万级数据&#xff08;10个G左右&#xff09;的迁移&#xff0c;耗时控制在半小时内 1.show variables like %secure%;查看 secure-file-priv 当前的值是什么 2.如果没有可以在my.ini&#xff08;windows&#xff09;my.cnf&#xff08;linux&#xff09;中添加secure…

得物染色环境落地实践

1. 背景 测试环境治理一直是各大公司非常重要的一个课题&#xff0c;测试环境稳定性很大程度影响迭代开发&测试效率。 综合来看&#xff0c;测试环境不稳定的原因主要有以下几点&#xff1a; 测试环境的变更非终态变更&#xff0c;经常会有代码发布/配置发布导致服务无法…

ArcGIS基础实验操作100例--实验47融合相邻面要素

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验47 融合相邻面要素 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&am…

【Vue3】Vue内置指令

注意&#xff1a;在vue中使用v-开头的都是Vue指令。一、v-html插入标签可以识别标签。<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"&…

argparse简介

一、argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块&#xff0c;argparse 模块可以让人轻松编写用户友好的命令行接口&#xff0c;能够帮助程序员为模型定义参数。 argparse定义四个步骤 导入argparse包 ——import argparse创建一个命令行解析…

Fastjson反序列化审计及验证

简介&#xff1a;数字化平台已经与我们生活紧密结合&#xff0c;其用户规模庞大&#xff0c;一旦系统出现故障&#xff0c;势必会造成一定生活的不便。比如疫情时代&#xff0c;健康码已经成为人们出门必备的条件&#xff0c;一旦提供健康码服务平台出现故障&#xff0c;出行将…

imx6ull内核移植记录:failed to find ocotp node

前言 记录记录&#xff0c;是个和MAC地址相关的信息。 一 尝试尝试 [ 0.093958] vddsoc: supplied by regulator-dummy [ 0.126215] failed to find ocotp node [ 0.126744] No ATAGs? 经过分析&#xff0c;拆分为两个问题&#xff1a; [ 0.126215] failed t…