摘要:題目旋轉(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
摘要:題目最小移動次數(shù)使數(shù)組元素相等給定一個長度為的非空整數(shù)數(shù)組,找到讓數(shù)組所有元素相等的最小移動次數(shù)。加一減一所以先求出最小的元素,在求出所有元素與最小元素的差值的和,即為最小移動次數(shù)。題目:最小移動次數(shù)使數(shù)組元素相等 給定一個長度為 n 的非空整數(shù)數(shù)組,找到讓數(shù)組所有元素相等的最小移動次數(shù)。每次移動可以使 n - 1 個元素增加 1。 復制代碼 示例: 輸入...
摘要:請定義一個函數(shù)實現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串和數(shù)字,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果。 目錄 第一題:左旋轉(zhuǎn)字符串 解題思路: 畫圖解析: 代碼實現(xiàn): 第二題:輪轉(zhuǎn)數(shù)組 解題思路: 畫圖解析: 代碼實現(xiàn): 第一題:左旋轉(zhuǎn)字符串 LeetCode 劍指 Offer 58: 描述:...
摘要:先實現(xiàn)棧操作遍歷鏈表,把每個節(jié)點都進中然后再遍歷鏈表,同時節(jié)點依次出棧,二者進行比較。 ?作者簡介:大家好,我是車神哥,府學路18號的車神? ?個人主頁:應(yīng)無...
摘要:每日一題叉樹的最大深度鏈接叉樹的最大深度題目分析簡單的搜索題目。只需要從根節(jié)點開始一下整個叉樹就可以得到答案了。主要是對要理解和掌握叉樹的遍歷。代碼作者作者 lee...
閱讀 3522·2021-09-02 09:53
閱讀 1860·2021-08-26 14:13
閱讀 2806·2019-08-30 15:44
閱讀 1377·2019-08-30 14:03
閱讀 2029·2019-08-26 13:42
閱讀 3062·2019-08-26 12:21
閱讀 1341·2019-08-26 11:54
閱讀 1943·2019-08-26 10:46