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

【算法】Reconstruct a 2-Row Binary Matrix 重構(gòu) 2 行二進(jìn)制矩陣

這篇具有很好參考價值的文章主要介紹了【算法】Reconstruct a 2-Row Binary Matrix 重構(gòu) 2 行二進(jìn)制矩陣。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Reconstruct a 2-Row Binary Matrix 重構(gòu) 2 行二進(jìn)制矩陣

問題描述:

給你一個 2 行 n 列的二進(jìn)制數(shù)組:

矩陣是一個二進(jìn)制矩陣,這意味著矩陣中的每個元素不是 0 就是 1。
第 0 行的元素之和為 upper。
第 1 行的元素之和為 lower。
第 i 列(從 0 開始編號)的元素之和為 colsum[i],colsum 是一個長度為 n 的整數(shù)數(shù)組。
你需要利用 upper,lower 和 colsum 來重構(gòu)這個矩陣,并以二維整數(shù)數(shù)組的形式返回它。

如果有多個不同的答案,那么任意一個都可以通過本題。

如果不存在符合要求的答案,就請返回一個空的二維數(shù)組。

1 < = c o l s u m . l e n g t h < = 1 0 5 0 < = u p p e r , l o w e r < = c o l s u m . l e n g t h 0 < = c o l s u m [ i ] < = 2 1 <= colsum.length <= 10^5\\ 0 <= upper, lower <= colsum.length\\ 0 <= colsum[i] <= 2 1<=colsum.length<=1050<=upper,lower<=colsum.length0<=colsum[i]<=2

k , n u m s . l e n g t h 范圍 [ 1 , 16 ] , n u m s . l e n g t h k ,nums.length 范圍[1,16 ] ,nums.length%k==0 ,nums[i] 范圍[1,nums.length ] k,nums.length范圍[1,16],nums.length

分析

目標(biāo)是構(gòu)建出一個2行的二進(jìn)制數(shù)組,并且第一行的 s u m 1 = u p p e r sum1=upper sum1=upper,第二行的 s u m 2 = l o w e r sum2=lower sum2=lower.并且2行相同位置的加和 a r r 1 [ i ] + a r r 2 [ i ] = = c o l s u m [ i ] arr1[i]+arr2[i]==colsum[i] arr1[i]+arr2[i]==colsum[i].

當(dāng)然也可能無法構(gòu)建符合給定條件的數(shù)組。

假設(shè)存在這樣的目標(biāo)數(shù)組arr,那么必須滿足
第一個限制
∑ 0 < = k < = n ( a r r 1 [ k ] + a r r 2 [ k ] ) = u p p e r + l o w e r . \sum_{0<=k<=n}(arr1[k]+arr2[k])= upper+lower. 0<=k<=n?(arr1[k]+arr2[k])=upper+lower.

此外就要看數(shù)據(jù)是否能夠分配合理,觀察可以知道,當(dāng) c o l s u m [ i ] = = 0 o r 2 colsum[i]==0 or 2 colsum[i]==0or2,可以確定 a r r [ i ] arr[i] arr[i]的數(shù)值,即同0,2.
所以另一個限制就是 c o l s u m colsum colsum 2 2 2出現(xiàn)的次數(shù).
c n t 2 < = min ? ( u p p e r , l o w e r ) . cnt2<=\min(upper,lower). cnt2<=min(upper,lower).

所以當(dāng)上述2個條件都滿足的情況下,是完全可以構(gòu)造成功。

策略貪心

u p p e r , l o w e r upper,lower upper,lower都減掉 c n t 2 cnt2 cnt2,即2出現(xiàn)的次數(shù),剩余的就是各行1出現(xiàn)的次數(shù)。
所以當(dāng) c o l s u m [ i ] = = 1 colsum[i]==1 colsum[i]==1,可以先放行1,當(dāng) u p p e r upper upper降低為0,就可以把剩余的都放入行2。

代碼

class Solution {
    public List<List<Integer>> reconstructMatrix(int upper, int lower, int[] colsum) {
        int n = colsum.length;
        int sum = 0, two = 0;
        for (int i = 0; i < n; ++i) {
            if (colsum[i] == 2) {
                ++two;
            }
            sum += colsum[i];
        }
        if (sum != upper + lower || Math.min(upper, lower) < two) {
            return new ArrayList<List<Integer>>();
        }
        upper -= two;
        lower -= two;
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        for (int i = 0; i < 2; ++i) {
            res.add(new ArrayList<Integer>());
        }
        for (int i = 0; i < n; ++i) {
            if (colsum[i] == 2) {
                res.get(0).add(1);
                res.get(1).add(1);
            } else if (colsum[i] == 1) {
                if (upper > 0) {
                    res.get(0).add(1);
                    res.get(1).add(0);
                    --upper;
                } else {
                    res.get(0).add(0);
                    res.get(1).add(1);
                }
            } else {
                res.get(0).add(0);
                res.get(1).add(0);
            }
        }
        return res;
    }
}
 

時間復(fù)雜度 O ( N ) O(N) O(N)

空間復(fù)雜度 O ( 1 ) O(1) O(1)

Tag

Matrix
Greedy文章來源地址http://www.zghlxwxcb.cn/news/detail-526484.html

到了這里,關(guān)于【算法】Reconstruct a 2-Row Binary Matrix 重構(gòu) 2 行二進(jìn)制矩陣的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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ī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • 【Elasticsearch教程6】Mapping字段類型之二進(jìn)制binary

    binary類型接收一個Base64編碼的字符串,默認(rèn)情況二進(jìn)制字段 不能被存儲和檢索 。 binary不能被存儲? 這個意思不是說沒有存儲在ES,而是說mapping中該字段的store參數(shù)默認(rèn)是false。 默認(rèn)情況下字段的值都會存儲到 _source 里, binary 類型的值也是如此。 如果 store 屬性設(shè)置為true,

    2024年02月05日
    瀏覽(34)
  • 將Swift Package構(gòu)建為通用二進(jìn)制文件 Universal Binary

    ? 因此,在蘋果在WWDC 2020期間宣布他們將把Mac從英特爾處理器過渡到蘋果硅之后,現(xiàn)在是時候讓每個人都準(zhǔn)備好他們的軟件了。 對大多數(shù)人來說,這次過渡可能更容易一些,特別是那些已經(jīng)在iOS上支持arm64的人,但仍有工作要做,以確保工具和預(yù)編譯的發(fā)行版支持使用Apple

    2024年02月11日
    瀏覽(18)
  • LeetCode 1253. 重構(gòu) 2 行二進(jìn)制矩陣

    力扣題目鏈接:https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/ 給你一個? 2 ?行 n 列的二進(jìn)制數(shù)組: 矩陣是一個二進(jìn)制矩陣,這意味著矩陣中的每個元素不是? 0 ?就是? 1 。 第 0 行的元素之和為? upper 。 第 1 行的元素之和為 lower 。 第 i 列(從 0 開始編號)的元素之和為

    2024年02月11日
    瀏覽(26)
  • 【每日一題】1253. 重構(gòu) 2 行二進(jìn)制矩陣

    給你一個 2 行 n 列的二進(jìn)制數(shù)組: 矩陣是一個二進(jìn)制矩陣,這意味著矩陣中的每個元素不是 0 就是 1。 第 0 行的元素之和為 upper。 第 1 行的元素之和為 lower。 第 i 列(從 0 開始編號)的元素之和為 colsum[i],colsum 是一個長度為 n 的整數(shù)數(shù)組。 你需要利用 upper,lower 和 colsu

    2024年02月12日
    瀏覽(88)
  • ?LeetCode解法匯總253. 重構(gòu) 2 行二進(jìn)制矩陣

    https://github.com/September26/java-algorithms 給你一個? 2 ?行? n ?列的二進(jìn)制數(shù)組: 矩陣是一個二進(jìn)制矩陣,這意味著矩陣中的每個元素不是? 0 ?就是? 1 。 第? 0 ?行的元素之和為? upper 。 第? 1 ?行的元素之和為? lower 。 第? i ?列(從? 0 ?開始編號)的元素之和為? colsum[i] ,

    2024年02月11日
    瀏覽(22)
  • 圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)

    圖文結(jié)合帶你搞懂MySQL日志之Binary log(二進(jìn)制日志)

    往期回顧 圖文結(jié)合帶你搞定MySQL日志之Undo log(回滾日志) 圖文結(jié)合帶你搞懂InnoDB MVCC 圖文結(jié)合帶你搞懂MySQL日志之Redo Log(重做日志) 圖文結(jié)合帶你搞懂MySQL日志之Error Log(錯誤日志) 圖文結(jié)合帶你搞懂MySQL日志之Slow Query Log(慢查詢?nèi)罩荆?圖文結(jié)合帶你搞懂MySQL日志之relay log(中

    2024年02月07日
    瀏覽(92)
  • MySQL 8.0 OCP (1Z0-908) 考點(diǎn)精析-架構(gòu)考點(diǎn)1:二進(jìn)制日志文件(Binary log)

    【免責(zé)聲明】文章僅供學(xué)習(xí)交流,觀點(diǎn)代表個人,與任何公司無關(guān)。 編輯|SQL和數(shù)據(jù)庫技術(shù)(ID:SQLplusDB) MySQL中有多種類型的日志文件,這些日志可用于故障排除、性能調(diào)整和審計等目的,幫助找出正在發(fā)生的活動。 常見的日志文件包括: 日志類型 寫入日志的信息 錯誤日志(

    2024年02月16日
    瀏覽(91)
  • 力扣67. 二進(jìn)制求和算法

    力扣67. 二進(jìn)制求和算法

    這道題需要,給你兩個字符串比如 答案是:\\\"10101\\\" 然后需要你給出計算結(jié)果,那么我們很容易想到兩種做法 1. 調(diào)庫做法:直接轉(zhuǎn)化為整數(shù),然后用內(nèi)置函數(shù)做進(jìn)制轉(zhuǎn)換直接計算出結(jié)果 2. 計算做法:將十進(jìn)制思維移植過來,對每一位加并且做carry操作,最后得出結(jié)果 筆者最初

    2024年01月16日
    瀏覽(27)
  • 【算法題】67. 二進(jìn)制求和

    給你兩個二進(jìn)制字符串 a 和 b ,以二進(jìn)制字符串的形式返回它們的和。 示例 1: 輸入:a = \\\"11\\\", b = \\\"1\\\" 輸出:\\\"100\\\" 示例 2: 輸入:a = \\\"1010\\\", b = \\\"1011\\\" 輸出:\\\"10101\\\" 提示: 1 = a.length, b.length = 10^4 a 和 b 僅由字符 \\\'0\\\' 或 \\\'1\\\' 組成 字符串如果不是 \\\"0\\\" ,就不含前導(dǎo)零

    2024年01月23日
    瀏覽(21)
  • 二進(jìn)制算法題+回文鏈表

    先計算兩個字符串公共的部分,需要維護(hù)三個變量:兩個數(shù)組的指針idx+一個進(jìn)位變量up 注意,這里用StringBuffer來存儲結(jié)果,先存儲的是個位,所以最后需要reverse一下。 21分鐘 如何看一個字符是否在變化?維護(hù)一個temp變量來記錄他上一次的結(jié)果。 模擬十進(jìn)制轉(zhuǎn)二進(jìn)制:先對

    2024年02月07日
    瀏覽(86)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包