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

思路:

假设 n=7 且k=3 。

原始数组                  : 1 2 3 4 5 6 7
反转所有数字后             : 7 6 5 4 3 2 1
反转前 k 个数字后          : 5 6 7 4 3 2 1
反转后 n-k 个数字后        : 5 6 7 1 2 3 4 --> 结果

public class Solution {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 start, int end) {while (start < end) {int temp = nums[start];nums[start] = nums[end];nums[end] = temp;start++;end--;}}
}

leetcode189. 旋转数组相关推荐

  1. 剑指offer:面试题11. 旋转数组的最小数字

    题目:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2, ...

  2. 剑指offer_第6题_旋转数组的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  3. 数组元素替换_LeetCode 题解 | 189. 旋转数组

    力扣 189. 旋转数组(点击查看题目) 题目描述 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 示例 2: 说明: 尽可能想出更多的解决方案,至少有三种不同的方 ...

  4. 剑指offer:旋转数组的最小数字

    题目 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的 ...

  5. 输出一个为递增排序数组的旋转数组中的最小元素——8

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为数组{1, 2,3, 4, 5}的一个旋转, ...

  6. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

  7. 【剑指offer-Java版】08旋转数组的最小数字

    旋转数组最小数字:暴力方法就是遍历-有效的方法是二分,但是存在失效的情况 几个特别的测试用例需要注意下: 数组中含有多个相同的数字 最小数字就是第一个 public class _Q08 {publi ...

  8. Java 旋转数组查找旋转点和任意元素(元素可重复)

    public class Test {// 已知数组A是由有序数组B(数组B未知)向右移动n(0<=n<=B.length)位得到// 例如 A = {4, 5, 1, 2, 3} 由 B ...

  9. JAVA实现旋转数组的最小数字问题(《剑指offer》)

    题目:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减序列的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5} ...

最新文章

  1. 深入浅出详细介绍Java异常,让你茅塞顿开般的感觉
  2. android第一次启动超级慢
  3. Anaconda ubuntu16.04 Cuda 8.0安装pytorch
  4. 公司mysql部署文档_Mysql部署文档
  5. 有一个会泰勒级数的八岁表妹是怎样一种体验?
  6. python matplotlib 绘制曲线图,柱状图
  7. Ruby 和 Python 分析器是如何工作的?
  8. suse linux ftp家目录,Suse linux下控制ftp用户访问目录
  9. PHP中include与require的特点和区别说明
  10. oracle存储过程传整数,oracle存储过程传参数
  11. iOS核心动画详解swift版----基础动画
  12. 简述angularjsh中constant和$filter的用法
  13. Android Studio3.0,在原有项目中进行ndk配置
  14. 【期末划重点】电路与电子技术基础
  15. Towards Real-Time Multi-Object Tracking(JDE)
  16. 红色警戒2修改器原理百科(三)
  17. 史上最搞笑的程序员段子,有图有真相!
  18. 解决微信浏览器缓存问题
  19. 2021年危险化学品经营单位主要负责人考试资料及危险化学品经营单位主要负责人新版试题
  20. 智慧路灯商业模式分析:智慧灯杆如何盈利?12项盈利模式汇总

热门文章

  1. uC/GUI 在Cortex-M3 内核上的移植
  2. c语言课程设计修改订单流程图,C语言课程设计————写下流程图! 谢谢
  3. python生成验证码_python之验证码生成(gvcode与captcha)
  4. Java学习笔记—UDP通信
  5. c mysql安装教程视频_MySQL安装教程 - Windows安装MySQL教程 - 小白式安装MySQL教程 - 青衫慧博客...
  6. 【转】02.Dicom 学习笔记-DICOM C-Find 消息服务
  7. 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
  8. [你必须知道的.NET] 第七回:品味类型---从通用类型系统开始
  9. Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
  10. 【CH - 1401】 兔子与兔子(字符串哈希)