旋转数组

算法篇—旋转数组与旋转链表 文章目录1.旋转数组2.旋转链表 1.旋转数组 a.思路 🔶将k%numsSize等效为m。 🔶将区间[numsSize-m,numsSize-1]进行翻转,再将区间[0,numsSize-m-1] 进行翻转。然后数组整体进行翻转。 b.图解 c.代码 2.旋转链表 a.思路 🔶计算节点个数,nodesize。 🔶将k%nodesize等效成m。 🔶通过快慢指针,使slow指向倒数第m个节点。 🔶将slow以后的链表进行翻转,将slow以前的链表进行翻转,然后整体翻转 b.图解 c.代码 今天的 阅读详情

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

示例 1:

输入: [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:

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

说明:

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

分析:

    设字符串为“abcdefg",往右移动两位,最后的结果为"fgabcde"

    第一步:逆置最后两位,结果为"abcdegf"

    第二步:逆置前面的几位,结果为“edcbagf"

    第三步:逆置全部字符串,结果为"fgabcde"

    完成

class Solution {
public:
    void rotate(vector<int>& nums, int k) {
//         
        reverse(nums,0,nums.size()-k-1);
        reverse(nums,nums.size()-k,nums.size()-1);
        reverse(nums,0, nums.size()-1);        
    }
    
//     逆置从Nums[begin]到nums[end]的数组
    void reverse(vector<int>& nums,int begin, int end){
        while(begin <= end){
            int temp = nums[begin];
            nums[begin] = nums[end];
            nums[end] = temp;
            begin ++;
            end --;
        }
    }
};

 

算法总结之旋转数组 旋转数组 定义 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。 方法1:转为有序数组 寻找旋 阅读详情

相关推荐

二维数组旋转

java int a[][]={{1,2,3},{4,5,6}}; //定义3*3数组演示 int c[][]=new int[2][3]; for(int i=0;i<2;i++) { for(int j=0;j<3;j++) { c[i][j]=...

jacke121的专栏 3614

旋转数组的几种做法

旋转数组的几种方法

adcxhw的博客 1615

别再对着数据手册发愁了!用HFSS 2023 R2搞定ESP32-C3板载天线的阻抗匹配

本文详细介绍了如何利用HFSS 2023 R2进行ESP32-C3板载天线的阻抗匹配优化,解决实际PCB设计中常见的性能偏差问题。通过智能模型导入、科学参数扫描和量化优化流程,显著提升天线性能,适用于WIFI和蓝牙应用场景。

weixin_42523543的博客 447

【数组】旋转数组(两种方法)

数组 旋转数组(两种方法) 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例 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

Iris_Nie00的博客 1331

如何用Arduino和HX711压力传感器制作一个简易电子秤(含OLED显示)

本文详细介绍了如何使用Arduino、HX711压力传感器和OLED显示屏制作一个简易电子秤。从硬件连接到软件编程,提供了分步教程,包括核心元件功能解析、接线方法、库安装、模块测试以及关键的校准流程。项目实践性强,适合创客和DIY爱好者学习嵌入式系统与传感器应用。

tea88的博客 536

DC综合中set_dft_signal的实战配置与优化策略

本文深入解析了DC综合中set_dft_signal命令的实战配置与优化策略。文章从命令的核心作用出发,详细拆解了-view、-type、-usage等关键参数,并通过扫描使能与时钟门控的实战案例,展示了如何正确配置以实现测试模式下的功耗优化。同时,文章总结了高级优化策略、与低功耗流程的协同方法以及常见错误排查清单,旨在帮助数字芯片设计工程师构建高可测性、低功耗的稳健DFT基础。

weixin_28347369的博客 403

旋转数组的四种解法

目录示例:给定一个数组,将数组中的元素向右移动 *k* 个位置,其中 *k* 是非负数。解法1:遍历法解法2:反转法解法3:开辟数组法解法4:环状替换法 示例:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例: 输入: [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] 解法1:遍历

ych9527的博客 5507

在天问block环境下LU-ASR01与51单片机的基础运用

正确步骤将模块和电脑连接后,仍然显示未连接(如4.1中图片中的编译下载后面显示未连接),可以尝试关闭软件后尝试,如果仍然不行换一条type-c线再试;以上方式都不行,可能要怀疑ASR01硬件损坏,跟商家联系!!!

BUG7073的博客 1万+

旋转数组(数组右移)

给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [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: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,-100,3]

395

Python读取ECMWF grib数据;Anaconda配置eccodes和cfgrib环境及安装过程

python读取grib数据,eccodes,cfgrib安装。

qq_36714629的博客 2244

便携式水下动态实时视频色彩还原设备,一键快速实现对水下偏色视频和图像的色彩还原处理

便携式水下动态实时视频色彩还原,一键快速对水下图像进行色彩校正,清晰度提升和亮度均衡处理,为水下资源勘探和科学考古,海洋生态环境监测,水下机器作业等应用提供有力的协助

weixin_43518680的博客 633

【LeetCode】旋转数组

给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。 示例 1: 输入: [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: 输入: [-1,-100,3,99] 和 k = 2 输出: [3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,-10...

韩旭051的博客 838

国科大作业考试资料《人工智能原理与算法》2024新编-第三次作业整理

1. 你的目标是让机器人走出迷宫。机器人面朝北,开始位置在迷宫中间。你可以让机器人转向面朝东、南、西或北。你可以让机器人向前走一段距离,在撞墙之前它会停步。 (1)将问题形式化。状态空间有多大? (2)在迷宫中游走,在两条路或更多路交叉的路口可以转弯。重新形式化这个问题。现在状态空间有多大? (3)从迷宫的任一点出发,我们可以朝四个方向中的任一方向前进直到可以转弯的地方,而且我们只需要这样做。重新对这个问题进行形式化。我们需要记录机器人的方向吗? 2. 传教士和野人问题

MatsumotoChrikk 984

Leetcode旋转数组——旋转与搜索

文章目录引入旋转数组题解搜索旋转数组题解 引入 这次遇到的题目如下: 189.旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [1,2,3,4,5,6,7] 和 k = 3 输出: [5,6,7,1,2,3,4] 以及我将额外介绍旋转后的搜索方法: 33.搜索旋转排序数组 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,...

No_Game_No_Life_的博客 354

基于STC8G1K08A单片机的EC11旋转编码器控制(江科大同款,代码可直接使用)

本文介绍了STC8G系列单片机与EC11旋转编码器的接口实现方案。硬件方面详细说明了EC11编码器的机械结构、电气特性及与单片机的典型连接电路,包括上拉电阻和消抖设计。软件部分重点阐述了状态检测算法,通过状态机和查找表实现方向判断,采用中断方式检测信号变化,并配合定时器进行软件消抖处理。文章还提供了完整的代码实现,包括GPIO初始化、中断服务函数、状态转换逻辑等关键模块,展示了如何通过串口输出验证旋转计数。最后讨论了抗抖动优化、高低速应用场景等实际问题解决方案。该方案在菜单导航、参数调节等场景中具有实用价值

weixin_74013772的博客 322

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数组旋转的3种方法

文章目录方法 1(使用临时数组)方法 2(逐一旋转)方法 3(杂耍算法)参考文档     编写一个函数 rotate(ar[], d, n) ,将大小为 n 的数组 arr[] 旋转 d 个元素。     将上述数组旋转2个元素,将生成数组: 方法 1(使用临时数组)     输入 arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2, n =7 将 d 元素存储到临时数组 temp temp[] = [1, 2] 移动 arr[] 的其余部分 arr[] = [3, 4, 5,

运维狗的备忘录 1561

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

旋转数组总结篇

旋转数组总结篇

❀雾里看花花里看雾❀ 1045

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript旋转数组

旋转数组前言1.什么是旋转数组2.环状替换3.LeetCode题目4.解法5.代码实现总结 前言 1.什么是旋转数组 旋转数组分为左旋转和右旋转两类,力扣 189 题为右旋转的情况,今日分享的为左旋转。 给定一个数组,将数组中的元素向左旋转 k 个位置,其中 k 是非负数。 2.环状替换 环状替换比较难理解。如果把数组的数据放在正多边形上,以走跳棋的思路替换数据,画个图就好理解了。 假如 n=5, k=2, 数字1-5依次放在五边形顶点,数字替换的轨迹是1-3-5-2-4-1,回到原点,count = n,

Anwar的博客 5413

旋转数组类的题目

题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 题目来源:剑指offer 解决代码: class Solution { public: in...

nbawj的博客 232

JS之数组旋转

**题目:** 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。 输入:[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] 旋转数组实际上就是把数组的数字向后旋转k位,末位的数字自动填充到前面的位置。

M_Jin的博客 1721

搜索旋转数组

搜索旋转数组

青釉Oo的博客 1595

189、旋转数组

题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: [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] 理解: 向右移动k个数字,即将后k个数字放在前n-...

itomorrower08的博客 198

搜索旋转排序数组

优质博文。

程序猿进阶 1107
上一篇: 字符串中的第一个唯一字符
下一篇: 除自身以外数组的乘积
rdc01234
博客等级 码龄9年 10粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值