成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

LeetCode每日一題: 旋轉(zhuǎn)數(shù)組(No.189)

FreeZinG / 947人閱讀

摘要:題目旋轉(zhuǎn)數(shù)組給定一個數(shù)組,將數(shù)組中的元素向右移動個位置,其中是非負數(shù)。例如將到反轉(zhuǎn)將到反轉(zhuǎn)全部翻轉(zhuǎn)得到最后結(jié)果。這里要注意下還有這樣的情況即大于數(shù)組長度的情況。次旋轉(zhuǎn)次旋轉(zhuǎn)轉(zhuǎn)回來了次旋轉(zhuǎn)次旋轉(zhuǎn)轉(zhuǎn)回來了次旋轉(zhuǎn)所以這里的有效等于對數(shù)組長度求余。

題目: 旋轉(zhuǎn)數(shù)組
給定一個數(shù)組,將數(shù)組中的元素向右移動 k 個位置,其中 k 是非負數(shù)。
示例:
輸入: [1,2,3,4,5,6,7] 和 k = 3
輸出: [5,6,7,1,2,3,4]
解釋:
向右旋轉(zhuǎn) 1 步: [7,1,2,3,4,5,6]
向右旋轉(zhuǎn) 2 步: [6,7,1,2,3,4,5]
向右旋轉(zhuǎn) 3 步: [5,6,7,1,2,3,4]

輸入: [-1,-100,3,99] 和 k = 2
輸出: [3,99,-1,-100]
解釋: 
向右旋轉(zhuǎn) 1 步: [99,-1,-100,3]
向右旋轉(zhuǎn) 2 步: [3,99,-1,-100]
思考:
這道題有一種巧妙地利用反轉(zhuǎn)的做法。
首先將第0個到第k個元素反轉(zhuǎn),再將第k+1到末尾元素反轉(zhuǎn),最后再將全部元素反轉(zhuǎn)即可。
例如:[1,2,3,4,5,6,7]   k = 3
將0到3反轉(zhuǎn):[4,3,2,1,5,6,7]
將4到6反轉(zhuǎn):[4,3,2,1,7,6,5]
全部翻轉(zhuǎn):[5,6,7,1,2,3,4] 得到最后結(jié)果。

這里要注意下還有這樣的情況:[1,2]    k = 5    即k大于數(shù)組長度的情況。
這里可以發(fā)現(xiàn)數(shù)組旋轉(zhuǎn)次數(shù)等于數(shù)組長度時,旋轉(zhuǎn)后的數(shù)組與初始數(shù)組相同,轉(zhuǎn)了一圈又回來了。
1次旋轉(zhuǎn):[2,1]
2次旋轉(zhuǎn): [1,2]    轉(zhuǎn)回來了
3次旋轉(zhuǎn):[2,1]
4次旋轉(zhuǎn): [1,2]    轉(zhuǎn)回來了
5次旋轉(zhuǎn):[2,1]
所以這里的有效k等于k對數(shù)組長度求余。
實現(xiàn):
    class Solution {
    public void rotate(int[] nums, int k) {
        int length = nums.length;
        k %= length;
        reverse(nums, 0, length - 1);
        reverse(nums, 0, k - 1);
        reverse(nums, k, length - 1);
    }

    private void reverse(int[] nums, int start, int end) {
        while (start < end) {
            int temp = nums[start];
            nums[start++] = nums[end];
            nums[end--] = temp;
        }
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/6891.html

相關(guān)文章

  • LeetCode每日一題: 最小移動次數(shù)使數(shù)組元素相等(No.453)

    摘要:題目最小移動次數(shù)使數(shù)組元素相等給定一個長度為的非空整數(shù)數(shù)組,找到讓數(shù)組所有元素相等的最小移動次數(shù)。加一減一所以先求出最小的元素,在求出所有元素與最小元素的差值的和,即為最小移動次數(shù)。題目:最小移動次數(shù)使數(shù)組元素相等 給定一個長度為 n 的非空整數(shù)數(shù)組,找到讓數(shù)組所有元素相等的最小移動次數(shù)。每次移動可以使 n - 1 個元素增加 1。 復制代碼 示例: 輸入...

    Muninn 評論0 收藏0
  • LeetCode 劍指 Offer 輪轉(zhuǎn)數(shù)組 轉(zhuǎn)旋轉(zhuǎn)字符串

    摘要:請定義一個函數(shù)實現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串和數(shù)字,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果。 目錄 第一題:左旋轉(zhuǎn)字符串 解題思路: 畫圖解析: 代碼實現(xiàn): 第二題:輪轉(zhuǎn)數(shù)組 解題思路: 畫圖解析: 代碼實現(xiàn): 第一題:左旋轉(zhuǎn)字符串 LeetCode 劍指 Offer 58: 描述:...

    Brenner 評論0 收藏0
  • LeetCode天梯>Day028 回文鏈表(雙指針+遞歸+棧+數(shù)組) | 初級算法 | Pyth

    摘要:先實現(xiàn)棧操作遍歷鏈表,把每個節(jié)點都進中然后再遍歷鏈表,同時節(jié)點依次出棧,二者進行比較。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應(yīng)無...

    miguel.jiang 評論0 收藏0
  • leetcode每日一題-559:N叉樹的最大深度

    摘要:每日一題叉樹的最大深度鏈接叉樹的最大深度題目分析簡單的搜索題目。只需要從根節(jié)點開始一下整個叉樹就可以得到答案了。主要是對要理解和掌握叉樹的遍歷。代碼作者作者 lee...

    caiyongji 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<