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

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

這篇具有很好參考價值的文章主要介紹了( 數(shù)組和矩陣) 667. 優(yōu)美的排列 II ——【Leetcode每日一題】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?667. 優(yōu)美的排列 II

難度:中等

給你兩個整數(shù) nk ,請你構(gòu)造一個答案列表 answer ,該列表應(yīng)當(dāng)包含從 1n n 個不同正整數(shù),并同時滿足下述條件:

假設(shè)該列表是 answer = [a1, a2, a3, ... , an] ,那么列表 [|a1 - a2|, |a2 - a3|, |a3 - a4|, ... , |an-1 - an|] 中應(yīng)該有且僅有 k 個不同整數(shù)。

返回列表 answer 。如果存在多種答案,只需返回其中 任意一種 。

示例 1:

輸入:n = 3, k = 1
輸出:[1, 2, 3]
解釋:[1, 2, 3] 包含 3 個范圍在 1-3 的不同整數(shù),并且 [1, 1] 中有且僅有 1 個不同整數(shù):1

示例 2:

輸入:n = 3, k = 2
輸出:[1, 3, 2]
解釋:[1, 3, 2] 包含 3 個范圍在 1-3 的不同整數(shù),并且 [2, 1] 中有且僅有 2 個不同整數(shù):1 和 2

提示:

  • 1 < = k < n < = 1 0 4 1 <= k < n <= 10^4 1<=k<n<=104

??思路:

當(dāng) k=1 時,我們將 1~n 按照 [1,2,??,n]的順序進行排列,那么相鄰的差均為 1,滿足 k=1 的要求。

當(dāng) k=n?1 時,我們將 1~n 按照 [1, n, 2, n?1, 3, ??]的順序進行交叉排列,那么相鄰的差從 n?1 開始,依次遞減 1。這樣一來,所有從 1n?1的差值均出現(xiàn)一次,滿足 k = n?1的要求。

所以對于其它的一般情況,我們可以將這兩種特殊情況進行合并,即列表的前半部分相鄰差均為 1,后半部分相鄰差k 開始逐漸遞減到 1,這樣從 1k 的差值均出現(xiàn)一次,對應(yīng)的列表即為
[ 1 , 2 , ? , n ? k , n , n ? k + 1 , n ? 1 , n ? k + 2 , ? ] [1,2,?,n?k,n,n?k+1,n?1,n?k+2,?] [1,2,?,n?k,n,n?k+1,n?1,n?k+2,?]

??代碼:(Java、C++)

Java

class Solution {
    public int[] constructArray(int n, int k) {
        int[] ans = new int[n];
        for(int i = 1; i <= n - k; i++){//前半部分相鄰差均為1
            ans[i - 1] = i;
        }
        int low = n - k + 1;
        int high = n;
        int i = n - k;
        while(low <= high){//后半部分交叉排序
            ans[i++] = high--;
            if(i >= n) break;
            ans[i++] = low++;
        }
        return ans;
    }
}

C++

class Solution {
public:
    vector<int> constructArray(int n, int k) {
        vector<int> ans(n);
        for(int i = 1; i <= n - k; i++){//前半部分相鄰差均為1
            ans[i - 1] = i;
        }
        int low = n - k + 1;
        int high = n;
        int i = n - k;
        while(low <= high){//后半部分交叉排序
            ans[i++] = high--;
            if(i >= n) break;
            ans[i++] = low++;
        }
        return ans;
    }
};
?? 運行結(jié)果:

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

?? 復(fù)雜度分析:
  • 時間復(fù)雜度 O ( n ) O(n) O(n)。
  • 空間復(fù)雜度 O ( 1 ) O(1) O(1),這里不計入返回值需要的空間,只需常數(shù)級空間。

題目來源:力扣。

放棄一件事很容易,每天能堅持一件事一定很酷,一起每日一題吧!
關(guān)注我 leetCode專欄,每日更新!文章來源地址http://www.zghlxwxcb.cn/news/detail-455460.html

注: 如有不足,歡迎指正!

到了這里,關(guān)于( 數(shù)組和矩陣) 667. 優(yōu)美的排列 II ——【Leetcode每日一題】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ( 數(shù)組和矩陣) 697. 數(shù)組的度 ——【Leetcode每日一題】

    ( 數(shù)組和矩陣) 697. 數(shù)組的度 ——【Leetcode每日一題】

    難度:簡單 給定一個非空且只包含非負數(shù)的整數(shù)數(shù)組 nums ,數(shù)組的 度 的定義是指數(shù)組里任一元素出現(xiàn)頻數(shù)的最大值。 你的任務(wù)是在 nums 中找到與 nums 擁有相同大小的度的最短連續(xù)子數(shù)組,返回其長度。 示例 1: 輸入:nums = [1,2,2,3,1] 輸出:2 解釋: 輸入數(shù)組的度是 2 ,因為

    2024年02月02日
    瀏覽(22)
  • ( 數(shù)組和矩陣) 766. 托普利茨矩陣 ——【Leetcode每日一題】

    ( 數(shù)組和矩陣) 766. 托普利茨矩陣 ——【Leetcode每日一題】

    難度:簡單 給你一個 m x n 的矩陣 matrix 。如果這個矩陣是托普利茨矩陣,返回 true ;否則,返回 false 。 如果矩陣上每一條由左上到右下的對角線上的元素都相同,那么這個矩陣是 托普利茨矩陣 。 示例 1: 輸入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]] 輸出:true 解釋: 在上述矩陣

    2024年02月02日
    瀏覽(19)
  • ( 數(shù)組和矩陣) 645. 錯誤的集合 ——【Leetcode每日一題】

    ( 數(shù)組和矩陣) 645. 錯誤的集合 ——【Leetcode每日一題】

    難度:簡單 集合 s 包含從 1 到 n 的整數(shù)。不幸的是,因為數(shù)據(jù)錯誤,導(dǎo)致集合里面某一個數(shù)字復(fù)制了成了集合里面的另外一個數(shù)字的值,導(dǎo)致集合 丟失了一個數(shù)字 并且 有一個數(shù)字重復(fù) 。 給定一個數(shù)組 nums 代表了集合 S 發(fā)生錯誤后的結(jié)果。 請你找出重復(fù)出現(xiàn)的整數(shù),再找到

    2024年02月04日
    瀏覽(22)
  • (數(shù)組與矩陣) 劍指 Offer 03. 數(shù)組中重復(fù)的數(shù)字 ——【Leetcode每日一題】

    (數(shù)組與矩陣) 劍指 Offer 03. 數(shù)組中重復(fù)的數(shù)字 ——【Leetcode每日一題】

    難度:簡單 找出數(shù)組中重復(fù)的數(shù)字。 在一個長度為 n 的數(shù)組 nums 里的所有數(shù)字都在 0~n-1 的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個數(shù)字重復(fù)了,也不知道每個數(shù)字重復(fù)了幾次。請找出數(shù)組中任意一個重復(fù)的數(shù)字。 示例 1: 輸入 : [2, 3, 1, 0, 2, 5, 3] 輸出 :2 或

    2024年02月16日
    瀏覽(20)
  • ( 數(shù)組和矩陣) 485. 最大連續(xù) 1 的個數(shù) ——【Leetcode每日一題】

    ( 數(shù)組和矩陣) 485. 最大連續(xù) 1 的個數(shù) ——【Leetcode每日一題】

    難度:簡單 給定一個二進制數(shù)組 nums , 計算其中最大連續(xù) 1 的個數(shù)。 示例 1: 輸入:nums = [1,1,0,1,1,1] 輸出:3 解釋:開頭的兩位和最后的三位都是連續(xù) 1 ,所以最大連續(xù) 1 的個數(shù)是 3. 示例 2: 輸入:nums = [1,0,1,1,0,1] 輸出:2 提示: 1 = n u m s . l e n g t h = 1 0 5 1 = nums.length = 10^5

    2024年02月08日
    瀏覽(27)
  • ( 數(shù)組和矩陣) 378. 有序矩陣中第 K 小的元素 ——【Leetcode每日一題】

    ( 數(shù)組和矩陣) 378. 有序矩陣中第 K 小的元素 ——【Leetcode每日一題】

    難度:中等 給你一個 n x n n x n n x n 矩陣 m a t r i x matrix ma t r i x ,其中每行和每列元素均按升序排序,找到矩陣中第 k 小的元素。 請注意,它是 排序后 的第 k 小元素,而不是第 k 個 不同 的元素。 你必須找到一個內(nèi)存復(fù)雜度優(yōu)于 O ( n 2 ) O(n^2) O ( n 2 ) 的解決方案。 示例 1:

    2024年02月14日
    瀏覽(26)
  • (搜索) 劍指 Offer 38. 字符串的排列 ——【Leetcode每日一題】

    (搜索) 劍指 Offer 38. 字符串的排列 ——【Leetcode每日一題】

    難度:中等 輸入一個字符串,打印出該字符串中字符的所有排列。 你可以以任意順序返回這個字符串?dāng)?shù)組,但里面 不能有重復(fù)元素 。 示例: 輸入:s = “abc” 輸出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”] 限制 : 1 = s 的長度 = 8 ??思路:回溯 可以直接 暴力窮舉 ,但

    2024年02月12日
    瀏覽(29)
  • Rust每日一練(Leetday0020) 最后單詞的長度、螺旋矩陣II、排列序列

    Rust每日一練(Leetday0020) 最后單詞的長度、螺旋矩陣II、排列序列

    目錄 58. 最后一個單詞的長度 Length of Last Word???? 59. 螺旋矩陣 II Spiral Matrix II?????? 60. 排列序列 Permutation Sequence???????? ?? 每日一練刷題專欄??? Rust每日一練 專欄 Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 給你一個字符串? s ,由

    2024年02月10日
    瀏覽(58)
  • (貪心) 劍指 Offer 14- II. 剪繩子 II ——【Leetcode每日一題】

    (貪心) 劍指 Offer 14- II. 剪繩子 II ——【Leetcode每日一題】

    難度:中等 給你一根長度為 n 的繩子,請把繩子剪成整數(shù)長度的 m 段( m 、 n 都是整數(shù), n 1 并且 m 1 ),每段繩子的長度記為 k[0],k[1]...k[m - 1] 。請問 k[0]*k[1]*...*k[m - 1] 可能的最大乘積是多少?例如,當(dāng)繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到的最

    2024年02月13日
    瀏覽(23)
  • 2023-06-16 LeetCode每日一題(并行課程 II)

    點擊跳轉(zhuǎn)到題目位置 給你一個整數(shù) n 表示某所大學(xué)里課程的數(shù)目,編號為 1 到 n ,數(shù)組 relations 中, relations[i] = [xi, yi] 表示一個先修課的關(guān)系,也就是課程 xi 必須在課程 yi 之前上。同時你還有一個整數(shù) k 。 在一個學(xué)期中,你 最多 可以同時上 k 門課,前提是這些課的先修課

    2024年02月09日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包