摘要:題目旋轉(zhuǎn)數(shù)組給定一個(gè)數(shù)組,將數(shù)組中的元素向右移動(dòng)個(gè)位置,其中是非負(fù)數(shù)。例如將到反轉(zhuǎn)將到反轉(zhuǎn)全部翻轉(zhuǎn)得到最后結(jié)果。這里要注意下還有這樣的情況即大于數(shù)組長(zhǎng)度的情況。次旋轉(zhuǎn)次旋轉(zhuǎn)轉(zhuǎn)回來(lái)了次旋轉(zhuǎn)次旋轉(zhuǎn)轉(zhuǎn)回來(lái)了次旋轉(zhuǎn)所以這里的有效等于對(duì)數(shù)組長(zhǎng)度求余。
題目: 旋轉(zhuǎn)數(shù)組給定一個(gè)數(shù)組,將數(shù)組中的元素向右移動(dòng) k 個(gè)位置,其中 k 是非負(fù)數(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個(gè)到第k個(gè)元素反轉(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ù)組長(zhǎng)度的情況。 這里可以發(fā)現(xiàn)數(shù)組旋轉(zhuǎn)次數(shù)等于數(shù)組長(zhǎng)度時(shí),旋轉(zhuǎn)后的數(shù)組與初始數(shù)組相同,轉(zhuǎn)了一圈又回來(lái)了。 1次旋轉(zhuǎn):[2,1] 2次旋轉(zhuǎn): [1,2] 轉(zhuǎn)回來(lái)了 3次旋轉(zhuǎn):[2,1] 4次旋轉(zhuǎn): [1,2] 轉(zhuǎn)回來(lái)了 5次旋轉(zhuǎn):[2,1] 所以這里的有效k等于k對(duì)數(shù)組長(zhǎng)度求余。實(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/6891.html
摘要:題目最小移動(dòng)次數(shù)使數(shù)組元素相等給定一個(gè)長(zhǎng)度為的非空整數(shù)數(shù)組,找到讓數(shù)組所有元素相等的最小移動(dòng)次數(shù)。加一減一所以先求出最小的元素,在求出所有元素與最小元素的差值的和,即為最小移動(dòng)次數(shù)。題目:最小移動(dòng)次數(shù)使數(shù)組元素相等 給定一個(gè)長(zhǎng)度為 n 的非空整數(shù)數(shù)組,找到讓數(shù)組所有元素相等的最小移動(dòng)次數(shù)。每次移動(dòng)可以使 n - 1 個(gè)元素增加 1。 復(fù)制代碼 示例: 輸入...
摘要:請(qǐng)定義一個(gè)函數(shù)實(shí)現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串和數(shù)字,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果。 目錄 第一題:左旋轉(zhuǎn)字符串 解題思路: 畫(huà)圖解析: 代碼實(shí)現(xiàn): 第二題:輪轉(zhuǎn)數(shù)組 解題思路: 畫(huà)圖解析: 代碼實(shí)現(xiàn): 第一題:左旋轉(zhuǎn)字符串 LeetCode 劍指 Offer 58: 描述:...
摘要:先實(shí)現(xiàn)棧操作遍歷鏈表,把每個(gè)節(jié)點(diǎn)都進(jìn)中然后再遍歷鏈表,同時(shí)節(jié)點(diǎn)依次出棧,二者進(jìn)行比較。 ?作者簡(jiǎn)介:大家好,我是車(chē)神哥,府學(xué)路18號(hào)的車(chē)神? ?個(gè)人主頁(yè):應(yīng)無(wú)...
摘要:每日一題叉樹(shù)的最大深度鏈接叉樹(shù)的最大深度題目分析簡(jiǎn)單的搜索題目。只需要從根節(jié)點(diǎn)開(kāi)始一下整個(gè)叉樹(shù)就可以得到答案了。主要是對(duì)要理解和掌握叉樹(shù)的遍歷。代碼作者作者 lee...
閱讀 3477·2021-09-02 09:53
閱讀 1802·2021-08-26 14:13
閱讀 2762·2019-08-30 15:44
閱讀 1322·2019-08-30 14:03
閱讀 1970·2019-08-26 13:42
閱讀 3022·2019-08-26 12:21
閱讀 1311·2019-08-26 11:54
閱讀 1905·2019-08-26 10:46