Leetcode算法题(C语言)4--旋转数组

2023-11-04

题目:旋转数组

给定一个数组,将数组中的元素向右移动 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) 的原地算法。

代码实现:

void rotate(int* nums, int numsSize, int k) {   
    int i, j;
    int flag_value;
    int temp;
    
    /* 排除异常情况 */
     if(k > numsSize)
     {
         k = k % numsSize;
     }
    else if(k == 0)
    {
        return;
    }
    
    /* 循环移位 */
    for(j = 0; j < k; j++)
    {
        temp = nums[0];
        for(i = numsSize - 1; i >= 0; i--)
        {
            if(i == numsSize - 1)
                nums[0] = nums[i];
            else
                nums[i + 1] = nums[i];
        }
        nums[1] = temp;
    }
}


解题逻辑:
k每旋转一次,数组每位元素即向后移动一位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode算法题(C语言)4--旋转数组 的相关文章

  • ClassCastException: java.math.BigInteter cannot be cast to java.math.BigDecimal

    原文链接 https blog csdn net huxiaochao 6053 java article details 84750905 java Math BigInteger转 int类型 使用spring data jpa 查询数
  • kmeans总结

    1 关于分类和聚类 kmeans属于聚类算法中的一种 分类和聚类是不同的概念 虽然两者的目的都是对数据进行分类 但是却有一定的区别 分类是按照某种标准给对象贴标签 再根据标签来区分归类 聚类是事先没有给出标签 刚开始并不知道如何对数据分类
  • 06功能之读取文件统计数字的次数(hash_map存储)

    06功能之读取文件统计数字的次数 hash map存储 1 思路分析 1 每次将读取到的数字存在字符数组 2 从字符数组截取实际长度保存成string对象 3 建立hans map

随机推荐

  • 【0304】密码分类

    密码学基本概念 密码学的主要任务 为存储和传输中的信息提供信息安全保护 解决 1 机密性 如何使信息让授权的人能看懂 别人看不懂 2 可鉴别性 3 完整性 包括不可修改 4 抗抵赖性 密码学 密码编码学 寻求有效密码算法和协议 密码分析学
  • GB28181-2022注册注销基本要求、注册重定向解读和技术实现

    规范解读 GB28181 2022注册 注销基本要求相对GB28181 2016版本 做了一定的调整 新调整的部分如下 更改了注册和注销基本要求 见 9 1 1 2016 年版的 9 1 1 1 增加对NAT模式网络传输要求 宜增加TCP传
  • openEuler22.03启动提示错误:Failed to execute /sbin/init、Failed to execute /bin/sh,无法进入系统

    现象描述 openEuler服务器重启后 提示如下错误 定位思路 首先查看提示到的sh和init是否存在 如果存在 他们的权限是否跟正常机器一致 处理步骤 挂载光盘 进入救援模式 点击rescue的 选1 之后提示报错 救援模式无法进入 换
  • ES6字符串的扩展

    1 模板字符串 2 打印输出结果
  • java web 字体颜色循环变化 js实现

    setInterval 函数 设定颜色刷新的时间间隔 div h2 class title 天黑 h2 h4 请睁眼 h4 div js部分
  • rv1126-A/B升级方案报错

    一 修改配置 打开device rockchip RV1126 RV1109 BoardConfig mk 将RK Uboot DEFCONFIG配置成rv1126 ab 二 修改分区参数 根据mkfirmware sh文件中的参数PARA
  • JAVA机试题图书管理系统----三层架构模式

    通过Java程序实现图书管理系统 一 功能如下 使用一维数组 1 实现新增图书功能 2 实现查询图书功能 3 删除图书功能 二 具体实现 图书类包括 图书名称 价格 借出状态 int类型0表示己借出1表示未借出 借出日期 4个数组 管理类包
  • 数据字典功能

    1 什么是数据字典 数据字典存储有关数据的来源 说明 与其他数据的关系 用途和格式等信息 它本身就 是一个数据库 存储 关于数据项的数据 数据字典是个指南 它为数据库提供了 路线图 而不是 原始数据 换句话说 数据字典通常是指数据库中数据定
  • 软件之遇到的错误整理(KEIL)

    许久不用KEIL了 新接触的LORA项目中要用这个 安装这个软件出了许多莫名奇妙的错误 读本科时用的挺顺手的 现在用的一点也不习惯 参考了网上的教程 整理如下 免得许久不用之后又浪费时间在这上面 一 报错 FATAL ERROR L250
  • Boost电压增益分析(输入电流低频脉动时)

    1 Boost电压增益 如图所示 Boost电路的应用极为广泛 不光在DC DC中有应用 而且在AC DC中Boost型PWM整流器和Boost型PFC是主流拓扑 Boost的增益都很清楚 即Vo Vin 1 D 但是在输入电流有低频脉动时
  • Windows 10如何使用文件历史记录备份个人文件

    引自Winclient的博客 与先前版本的 Windows 一样 Windows 10 中也自带了 文件历史记录 功能 该功能旨在帮助用户方便地挂接外部磁盘 网络驱动器来实现对个人文件的增量备份功能 以免在磁盘损坏时大家抓狂 默认情况下 W
  • 论文笔记:Efficient and Effective Similar Subtrajectory Search with Deep Reinforcement Learning (子轨迹匹配)

    1 intro 大多数研究都将轨迹作为一个整体进行分析 忽略了局部相似的问题 考虑数据轨迹 T 和 查询轨迹 Tq 足球比赛数据库中一场完整比赛球员的轨迹 VS 球员某个进球前的移动轨迹 当作为一个整体考虑时 T与Tq基于某些轨迹相似性度量
  • (BN)批量归一化全面解析

    一 背景意义 本篇博文主要讲解2015年深度学习领域非常棒的一篇文献 Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate
  • Windows 安装Tomcat

    版本 tomcat8 5 jdk 8u231 一 解压JDK安装包 更换JDK安装路径 二 解压安装Tomcat 选择jdk安装路径 更换tomcat安装路径 三 设置环境变量 1 环境变量 界面中系统变量点击 新建 创建CATALINA
  • Vue3 理解 toRef 和 toRefs 的作用、用法、区别

    toRef toRefs 作用 toRef 和 toRefs 可以用来复制 reactive 里面的属性然后转成 ref 而且它既保留了响应式 也保留了引用 也就是你从 reactive 复制过来的属性进行修改后 除了视图会更新 原有 ra
  • 有关Android Bluetooth--Bluetooth基础

    蓝牙协议 针对Bluetooth Java Community Process JCP 定义了JSR 82Java APIs for Bluetooth Wireless Technology JABWT 规范bluetooth API 下
  • Appium移动端自动化测试--搭建模拟器和真机环境

    模拟器 安装Android Studio及Android SDK 推荐直接安装Android Studio 然后使用Android Studio安装SDK 启动SDK Manager 安装自己所需要的版本 下载安装即可 在这里插入图片描述
  • Openharmony的编译构建--基础篇

    一 编译构建简介 Openharmony的编译构建流程在鸿蒙的开源版本中以V3 1为分界线 流程略有变化 但其中都是ninja与python通过配置文件json 调用不同的交叉工具链来对源码进行编译 然后生成镜像文件 本文首先以Openha
  • ChatGLM2-6b小白部署教程(windows系统,16G内存即可,对显卡无要求,CPU运行)

    一 前言 近期清华KEG和智谱AI公司一起发布了中英双语对话模型ChatGLM2 6B 小尺寸LLM 开源在https github com THUDM ChatGLM2 6B 可单机部署推理和fine tune 虽然默认程序是GPU运行且
  • Leetcode算法题(C语言)4--旋转数组

    题目 旋转数组 给定一个数组 将数组中的元素向右移动 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