轮转数组------题解报告

news2024/12/25 12:38:33

题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题解:

如果直接暴力双循环会时间超限,所以我选择了一个空间复杂度比较高的方法。直接再创建一个数组,然后对应位置替换,最后把值赋给原来的nums数组。

 public void rotate(int[] nums, int k) {
        int []ans = new int[nums.length];
        k= k% nums.length;
        for(int i=0;i< nums.length;i++)
        {
            ans[i]=nums[(i+ nums.length-k)% nums.length];
        }
        for(int i=0;i<nums.length;i++)
        {
            nums[i]=ans[i];
        }
//        for(int i=0;i<nums.length;i++)
//            System.out.print(nums[i]+"    ");
    }

但是这种方法空间复杂度有些高了,只能说是大家都能想到的办法,还有没有更好的办法?

当然有,那就是翻转数组,首先我们来观察一下样例

输入:1 2 3 4 5 6 7

输出:5 6 7 1 2 3 4

有没有发现什么?如果没有,让我们把输入的数组翻转一下

输入:7 6 5 4 3 2 1(翻转后)

输出:5 6 7 1 2 3 4

现在发现了吧,我们以数组中第k个元素为界分开

输入:7 6 5                 4 3 2 1(翻转后)

输出:5 6 7                 1 2 3 4

观察到这里,我们就可以写代码了

public void rotate(int[] nums, int k) {
        k %= nums.length;
        reverse(nums, 0, nums.length - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, nums.length - 1);
    }

    public void reverse(int[] nums, int l, int r) {
        while (l < r) {
            int temp = nums[l];
            nums[l] = nums[r];
            nums[r] = temp;
            l++;
            r--;
        }
    }

 

 此时空间复杂度为O(1)

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

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

相关文章

主打的就是一蠢

var x "abc"; // 不清楚x的用途function a(b, c, d) {// 一堆未注释的代码...// ... }// 混合使用单引号和双引号 var message "Its a beautiful day!";fetch("https://xxx/api/data").then(response > response.json()).then(data > {/…

敏朗公益 · 童心共融:福州市实验幼儿园携手敏朗共同举办活动!

2023年3月31日&#xff0c;福州市敏朗公益服务中心联合福州市实验幼儿园开展“童年童趣童心共融”主题融合活动&#xff0c;让星儿体验幼儿园生活&#xff0c;与普龄儿童一同分享快乐的童年。 本场活动是由福州市鼓楼区民政局、鼓楼区残疾人联合会指导&#xff0c;在第16届世界…

软件测试八股文,面试必备,查漏补缺

前言 时光荏苒&#xff0c;一转眼已踏入2023年&#xff0c;人员就业市场以往的寒冬也貌似有了转暖的迹象&#xff0c;身边大批的就业人员也开始了紧张的备战之中。近几周也和多家合作公司的HR进行了沟通&#xff0c;发现虽然岗位就业情况较去年有所好转&#xff0c;但整体的需…

如何选择适合自己的跨境商城源码

选择适合自己的跨境商城源码是每个想要开展跨境电商业务的企业所面临的重要决策。源码的选择直接关系到商城功能的完整性、运营的便捷性以及未来的可定制性。在众多源码供应商中&#xff0c;我们为您提供以下几点参考&#xff0c;帮助您做出明智的选择。 1. 功能完整性 一个适合…

电脑断电后无法正常启动?这样解决!

“昨天公司遭遇突然的停电&#xff0c;导致无法继续工作&#xff0c;只得提前下班回家。今天回到办公室&#xff0c;电脑却陷入了启动问题。我试图多次重启&#xff0c;希望进入安全模式&#xff0c;但却一直卡在Windows启动进度条&#xff0c;紧接着出现了一个蓝底白字的画面&…

三级等保-linux服务器三权分立设置

安全问题 安全控制点 风险分析 风险等级 标准要求 加固建议 服务器未严格按照系统管理员权限、审计管理员权限、安全管理员权限进行分配管理员账户&#xff0c;未实现管理员用户的最小权限划分。 访问控制 可能存在管理员越权操作的风险 中 d)应授予管理用户所需的最…

如何选择优质的静动态住宅代理IP提供商?

当前&#xff0c;当网络隐私和数据安全备受关注时&#xff0c;住宅代理的使用已成为不可或缺的资源。从网络抓取者和营销人员到安全爱好者和在线安全爱好者&#xff0c;住宅代理在执行任何在线活动时提供基本的匿名性。 然而&#xff0c;并非所有住宅代理提供商都是相同的&…

anaconda中安装pytorch(GPU版)(离线安装)(最简单)

anaconda中安装pytorch&#xff08;GPU版&#xff09;&#xff08;离线安装&#xff09;&#xff08;最简单&#xff09;_anaconda安装pytorch gpu-CSDN博客anaconda里安装pytorch,GPU版本&#xff0c;离线本地安装&#xff0c;新手_anaconda安装pytorch gpuhttps://blog.csdn.…

哪家堡垒机支持国密算法?有哪些功能?

国密算法即国家密码局认定的国产密码算法&#xff0c;即商用密码。最近看到有不少小伙伴在问&#xff0c;哪家堡垒机支持国密算法&#xff1f;有哪些功能&#xff1f; 哪家堡垒机支持国密算法&#xff1f; 行云堡垒支持SM2、SM3、SM4等国产密码算法&#xff0c;同时支持国密…

Kubernetes基础概念及架构和组件

目录 一、kubernetes简介 1、kubernetes的介绍与作用 2、为什么要用K8S&#xff1f; 二、kubernetes特性 1、自我修复 2、弹性伸缩 3、服务发现和负载均衡 4、自动发布&#xff08;滚动发布/更新&#xff09;和回滚 5、集中化配置管理和密钥管理 6、存储编排 7、任务批…

突破Java编程的关键:揭示封装、继承和多态的核心原理与实际应用

Java中的封装、继承和多态知识点是学习java必备的基础知识&#xff0c;看似简单&#xff0c;真正理解起来还是有一定难度的&#xff0c;今天小编再次通过实例代码给大家讲解java 封装继承多态知识&#xff0c;感兴趣的朋友一起学习下吧。 封装 所谓的封装就是把类的属性和方法…

工具及方法 - TagSpaces

如今电子资料实在太多&#xff0c;每个人都可以访问和存储到大量的数据&#xff0c;可如何整理却是个伤脑筋的麻烦事。 我以前用过Canto的Cumulus&#xff0c;是一个local的digital asset management (DAM)软件&#xff0c;但现在已经变成云端的了&#xff0c;本地客户端的新版…

MySQL 主从复制原理

文章目录 1.主从复制方式1.1 异步复制1.2 半同步复制1.3 全同步复制 2.主从复制原理3.主从复制时推还是拉&#xff1f;参考文献 主从复制是 MySQL 高可用&#xff08;备份&#xff09;和高性能&#xff08;读写分离&#xff09;的基础&#xff0c;有了这个基础&#xff0c;MySQ…

微信小程序自定义组件及投票管理与个人中心界面搭建

14天阅读挑战赛 人生本来就没定义&#xff0c;任何的价值都是自己赋予。 目录 一、自定义tabs组件 1.1 创建自定义组件 1.2 tabs.wxml 编写组件界面 1.3 tabs.wxss 设计样式 1.4 tabs.js 定义组件的属性及事件 二、自定义组件使用 2.1 引用组件 2.2 编写会议界面内容 …

【迎战2023双十一】小白也能玩转!手把手教你实时获取多平台店铺数据,轻松实现数据大屏展示

要实时获取多平台店铺数据进行数据大屏展示&#xff0c;需要进行以下步骤&#xff1a; 确定数据采集方式&#xff1a;通过爬虫程序&#xff08;如Python的BeautifulSoup、Scrapy等爬虫框架&#xff09;或API接口来实现数据的获取&#xff0c;确定该方法所需的数据格式和调用方…

如何搭建远程控制家中设备的Home Assistant智能家居系统【内网穿透】

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 7、结语 前言 Home Assis…

冰蝎默认加密的流量解密

破解冰蝎的默认加密 流量包分析 上传的冰蝎流量包 POST /web-zh/DVWA/vulnerabilities/upload/ HTTP/1.1 Host: 192.168.197.111 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/118.0 Accept: text/html,application/xhtmlxml,a…

逐字稿 | 8 视频理解论文串讲(上)【论文精读】

目录 1 自从 Alexnet 之后&#xff0c;对视频理解的研究就从这种手工特征慢慢转移到卷积神经网络了。 ​编辑 1.1Deep video——深度学习时代&#xff0c;使用卷积神经网络去处理视频理解问题的最早期的工作之一 1.2如何把卷积神经网络&#xff0c;从图片识别应用到视频识别…

深度学习YOLOv4环境配置

软件安装 1、什么是CUDA CUDA(ComputeUnified Device Architecture)&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 CUDA下载地址为CUDA Toolkit Archive | NVIDIA Developer 版…

Python数据挖掘项目实战——自动售货机销售数据可视化分析及销售额预测

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…