当前位置: 首页 > news >正文

【leetcode hot 100 189】轮转数组

错误解法一:申请一个数组,第i个数放在新数组的i+ki+k-nums.length

class Solution {public void rotate(int[] nums, int k) {int[] results=new int[nums.length];for(int i=0; i<nums.length; i++){if(i+k<nums.length){results[i+k] = nums[i];}else{results[i+k-nums.length] = nums[i];}}for(int i=0; i<nums.length; i++){nums[i] = results[i];}}
}

错误原因:未考虑旋转次数>数组大小

在这里插入图片描述

错误解法二:进行k次旋转,每一次保存最后一个数,所有数往后移后,将保存的数放在第一位

class Solution {public void rotate(int[] nums, int k) {int i=0;while(i<k){// 第i+1次旋转int last=nums[nums.length-1];for(int j=nums.length-1;j>0;j--){nums[j]=nums[j-1];}nums[0]=last;i++;}}
}

错误原因:超出时间限制

在这里插入图片描述

解法一:(改进错误解法一)第i个数放在新数组的i+k(i+k)%nums.length

class Solution {public void rotate(int[] nums, int k) {int[] results=new int[nums.length];for(int i=0; i<nums.length; i++){if(i+k<nums.length){results[i+k] = nums[i];}else{results[(i+k)%nums.length] = nums[i];}}for(int i=0; i<nums.length; i++){nums[i] = results[i];}}
}

http://www.mrgr.cn/news/93187.html

相关文章:

  • 详解 scanf 和 printf(占位符、printf、scanf的返回值、printf的输出格式、scanf的输入格式)
  • GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)
  • Linux之命令记录【一】
  • 如何使用 Ollama 的 API 来生成聊天
  • 从数据到决策,永洪科技助力良信电器“智”领未来
  • transformer架构解析{掩码,(自)注意力机制,多头(自)注意力机制}(含代码)-3
  • 从零开始学习Slam--数学概念
  • 计算机网络软考
  • PHP fastadmin 学习
  • 【随手笔记】利尔达NB模组
  • 8.路由原理专题
  • 项目工坊 | Python驱动淘宝信息爬虫
  • 【ATXServer2】Android无法正确显示手机屏幕
  • EtherNet/IP转Modbus解析基于网关模块的罗克韦尔PLC与Modbus上位机协议转换通讯案例
  • JavaScript基础
  • AI-Ollama本地大语言模型运行框架与Ollama javascript接入
  • 甘特图开发代码(测试版)
  • 解决redis lettuce连接池经常出现连接拒绝(Connection refused)问题
  • linux一些使用技巧
  • C#将Box企业网盘里的文件批量上载到S3,并导入Redshift