国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II

這篇具有很好參考價值的文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完):https://blog.csdn.net/grd_java/article/details/123063846

java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II,算法,java,算法,leetcode,數(shù)據(jù)結(jié)構(gòu)

解題思路
  1. 題目要求我們返回一個數(shù)組長度為n的數(shù)組,必須含有1~n的所有數(shù),并且從左到右,相鄰的元素依次相減,它們的差,必須有k個不同的。比如1,2,3,4,5 這5個數(shù)兩兩相減,都只有一個差----1.如果想要兩個不同的差,就不能這么擺??梢赃@樣1,2,3,5,4 這樣就有2-1 = 1. 5-3 = 2這樣兩個不同的差。
  2. 而且我們發(fā)現(xiàn),想要有k個不同的差,必須至少有k+1個數(shù)才能完成。大家可以嘗試1~5這5個數(shù)都只能用一次,然后組出相鄰相減情況下的6個不同的差,是不行的。
  3. 最簡單的做法就是,用最后一個-最前面的,然后依次縮小范圍(用過的不再使用),再次用后面的-前面的。直到達(dá)到目標(biāo)要求的數(shù)量
  4. 那么如果要求k個不同的差,給我們n個數(shù)(n>=k+1). 我們只需要k+1個數(shù)就可以組成k個不同的差,也就是說,有n-k-1個數(shù),我們用不到,直接放入數(shù)組即可。剩下的依次用兩邊的組成不同的差。具體看下面圖解:
    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II,算法,java,算法,leetcode,數(shù)據(jù)結(jié)構(gòu)
  5. 極端一點(diǎn)的例子
    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II,算法,java,算法,leetcode,數(shù)據(jù)結(jié)構(gòu)
代碼:時間復(fù)雜度O(n) 空間復(fù)雜度O(1)

java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II,算法,java,算法,leetcode,數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-822615.html

class Solution {
    public int[] constructArray(int n, int k) {
        int[] arr = new int[n];//題目要求的返回數(shù)組
        int index = 0;//數(shù)組下標(biāo)
        //前面n-k-1個數(shù),我們不需要用來組成差
        for(int i = 1;i<n-k;i++){
            arr[index++] = i;
        }
        //剩下k+1個數(shù),是我們需要組成k個差的數(shù)
        //每次從兩邊各取一個
        for(int i = n - k, j = n; i<=j; i++,j--){
            arr[index++] = i;//左邊取一個
            //如果是奇數(shù)個,最后只會剩下一個數(shù),那么左邊和右邊都指向同一個元素
            //上面左邊已經(jīng)放了。右邊再放一次就下標(biāo)越界了。所以需要if(i!=j)這個判斷
            if(i!=j) arr[index++] = j;//右邊取一個
        }
        return arr;//返回答案數(shù)組
    }
}

到了這里,關(guān)于java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode667. 優(yōu)美的排列 II的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode766. 托普利茨矩陣

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode766. 托普利茨矩陣

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 這道題只要換一種理解方式,瞬間就會變的很簡單。 題目描述是每個元素左上和右下對角線元素都相同。但是,我們發(fā)

    2024年01月25日
    瀏覽(24)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode209. 長度最小的子數(shù)組

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode209. 長度最小的子數(shù)組

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 代碼:時間復(fù)雜度O(n).空間復(fù)雜度O(1)

    2024年01月21日
    瀏覽(95)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode96. 不同的二叉搜索樹

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode96. 不同的二叉搜索樹

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 很多人覺得動態(tài)規(guī)劃很難,但它就是固定套路而已。其實(shí)動態(tài)規(guī)劃只不過是將多余的步驟,提前放到dp數(shù)組中(就是一個數(shù)組,只

    2024年01月21日
    瀏覽(30)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode378. 有序矩陣中第 K 小的元素

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode378. 有序矩陣中第 K 小的元素

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 解題思路 已知矩陣相對有序,可以用二分搜索,不過和一維數(shù)組排序不同,這是二維的 每一行都遞增,每一列也是遞增,所以每

    2024年01月23日
    瀏覽(25)
  • java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode1091. 二進(jìn)制矩陣中的最短路徑

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題-----LeetCode1091. 二進(jìn)制矩陣中的最短路徑

    java數(shù)據(jù)結(jié)構(gòu)與算法刷題目錄(劍指Offer、LeetCode、ACM)-----主目錄-----持續(xù)更新(進(jìn)不去說明我沒寫完): https://blog.csdn.net/grd_java/article/details/123063846 雙分裂蛇:是求二維表中從起點(diǎn)到終點(diǎn)的經(jīng)典思路(也是求無權(quán)圖的最短路徑問題的經(jīng)典解法)。創(chuàng)建兩條分裂蛇,分別從起點(diǎn)和

    2024年04月26日
    瀏覽(97)
  • ( 數(shù)組和矩陣) 667. 優(yōu)美的排列 II ——【Leetcode每日一題】

    ( 數(shù)組和矩陣) 667. 優(yōu)美的排列 II ——【Leetcode每日一題】

    難度:中等 給你兩個整數(shù) n 和 k ,請你構(gòu)造一個答案列表 answer ,該列表應(yīng)當(dāng)包含從 1 到 n 的 n 個不同正整數(shù),并同時滿足下述條件: 假設(shè)該列表是 answer = [a1, a2, a3, ... , an] ,那么列表 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] 中應(yīng)該有且僅有 k 個不同整數(shù)。 返回列表 answer

    2024年02月06日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)

    數(shù)據(jù)結(jié)構(gòu)算法leetcode刷題練習(xí)(1)

    給定一個三角形 triangle ,找出自頂向下的最小路徑和。 每一步只能移動到下一行中相鄰的結(jié)點(diǎn)上。相鄰的結(jié)點(diǎn) 在這里指的是 下標(biāo) 與 上一層結(jié)點(diǎn)下標(biāo) 相同或者等于 上一層結(jié)點(diǎn)下標(biāo) + 1 的兩個結(jié)點(diǎn)。也就是說,如果正位于當(dāng)前行的下標(biāo) i ,那么下一步可以移動到下一行的下標(biāo)

    2023年04月24日
    瀏覽(20)
  • LeetCode 刷題 數(shù)據(jù)結(jié)構(gòu) 數(shù)組 485 最大連續(xù)1的個數(shù)

    LeetCode 刷題 數(shù)據(jù)結(jié)構(gòu) 數(shù)組 485 最大連續(xù)1的個數(shù)

    給定一個二進(jìn)制數(shù)組? nums ?, 計(jì)算其中最大連續(xù)? 1 ?的個數(shù)。 示例 1: 示例 2: 提示: 1 = nums.length = 105 nums[i] ?不是? 0 ?就是? 1. ? 參看bilibli視頻-up主 愛學(xué)習(xí)的飼養(yǎng)員,講解的很清晰。 手把手帶你刷Leetcode力扣|各個擊破數(shù)據(jù)結(jié)構(gòu)和算法|大廠面試必備技能【已完結(jié)】-

    2024年02月15日
    瀏覽(79)
  • LeetCode 刷題 數(shù)據(jù)結(jié)構(gòu) 鏈表 203 移除鏈表元素

    LeetCode 刷題 數(shù)據(jù)結(jié)構(gòu) 鏈表 203 移除鏈表元素

    Given the? head ?of a linked list and an integer? val , remove all the nodes of the linked list that has? Node.val == val , and return? the new head . Example 1: Example 2: Example 3: Constraints: The number of nodes in the list is in the range? [0, 104] . 1 = Node.val = 50 0 = val = 50 今天leetcode的中文官網(wǎng)比較卡,所以是登錄官網(wǎng)進(jìn)行

    2024年02月14日
    瀏覽(31)
  • Leetcode刷題---C語言實(shí)現(xiàn)初階數(shù)據(jù)結(jié)構(gòu)---單鏈表

    Leetcode刷題---C語言實(shí)現(xiàn)初階數(shù)據(jù)結(jié)構(gòu)---單鏈表

    刪除鏈表中等于給定值 val 的所有節(jié)點(diǎn) 給你一個鏈表的頭節(jié)點(diǎn)head和一個整數(shù)val,請你刪除鏈表中所有滿足Node.val==val的節(jié)點(diǎn),并返回新的頭節(jié)點(diǎn) 輸入:head = [1,2,6,3,4,5,6], val = 6 輸出:[1,2,3,4,5] 示例 2: 輸入:head = [ ], val = 1 輸出:[ ] 示例 3: 輸入:head = [7,7,7,7], val = 7 輸出:

    2024年02月15日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包