美文网首页
leetcode:189. Rotate Array

leetcode:189. Rotate Array

作者: 唐僧取经 | 来源:发表于2018-08-18 16:33 被阅读0次

    189. Rotate Array

    Description

    Given an array, rotate the array to the right by k steps, where k is non-negative.

    Example 1:

    Input: [1,2,3,4,5,6,7] and k = 3
    Output: [5,6,7,1,2,3,4]
    Explanation:
    rotate 1 steps to the right: [7,1,2,3,4,5,6]
    rotate 2 steps to the right: [6,7,1,2,3,4,5]
    rotate 3 steps to the right: [5,6,7,1,2,3,4]
    Example 2:

    Input: [-1,-100,3,99] and k = 2
    Output: [3,99,-1,-100]
    Explanation:
    rotate 1 steps to the right: [99,-1,-100,3]
    rotate 2 steps to the right: [3,99,-1,-100]
    Note:

    Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
    Could you do it in-place with O(1) extra space?

    Answer

    
    package main
    
    import "fmt"
    
    func rotate(nums []int, k int) {
        k = k % len(nums)
        reverse(nums, 0, len(nums))
        reverse(nums, 0, k)
        reverse(nums, k, len(nums))
    
    }
    
    func reverse(nums []int, start, end int) {
        for start < end {
            nums[start], nums[end-1] = nums[end-1], nums[start]
            start++
            end--
        }
    }
    
    func main() {
        a := []int{-1, 2, 3}
        rotate(a, 4)
        fmt.Println(a)
    }
    
    
    

    相关文章

      网友评论

          本文标题:leetcode:189. Rotate Array

          本文链接:https://www.haomeiwen.com/subject/xrmfiftx.html