第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

給定一個(gè)整數(shù)數(shù)組,找到最大子數(shù)組的長(zhǎng)度,使得至少 1 個(gè)數(shù)字(來自前 k 個(gè)數(shù)字)不存在于其中

給定一個(gè)整數(shù)數(shù)組,找到最大子數(shù)組的長(zhǎng)度,使得至少 1 個(gè)數(shù)字(來自前 k 個(gè)數(shù)字)不存在于其中

吃雞游戲 2023-05-09 15:09:05
問題:給定一個(gè)整數(shù)數(shù)組,整數(shù)范圍從 1 到 k。不必所有 k 個(gè)整數(shù)都存在。例如。k = 3 and Array = [1,2,1,1,2]找到最大子數(shù)組的長(zhǎng)度,使得從 1 到 k 中至少有一個(gè)整數(shù)不存在。示例:對(duì)于 k = 3 和數(shù)組 = [1,2,1,1,2],答案 = 5對(duì)于 k = 2 和數(shù)組 = [1,2,1,1,2],答案 = 2。我的代碼:def ans(A, n, k): #A is the array and n is the length    d = {}    if k > n:        return n    for i in range(n):        if A[i] in d:            d[A[i]].append(i)        else:            d[A[i]] = [i]    max_diff = 0    if len(d) != k:        return n    for j in d:        r = len(d[j])        if r == 1:            diff = max(n-d[j][-1]-1, d[j][0])        else:            diff = max(d[j][0], r - d[j][-1]-1)            for i in range(r-1):                diff = max(diff, d[j][i+1] - d[j][i]-1)        max_diff = max(max_diff, diff)    return max_diff但是,代碼給出運(yùn)行時(shí)錯(cuò)誤和一些隱藏的測(cè)試用例的錯(cuò)誤答案??赡艿腻e(cuò)誤是什么?以及給出錯(cuò)誤答案的可能測(cè)試用例?diff 的解釋:基本上對(duì)于數(shù)組中的每個(gè)數(shù)字,它正在尋找延伸,即不存在該特定元素的間隔長(zhǎng)度。對(duì)于第二個(gè)示例,d 變?yōu)?{1:[0,2,3], 2:[1,4]}。在二的情況下,在索引 0 上存在一個(gè)沒有二的子數(shù)組,即長(zhǎng)度 = 1,因此 diff 將為 1。那么在從索引 2 到 3(含)的子數(shù)組中沒有二。因此,差異 = 2。編輯:考慮到評(píng)論,我對(duì)代碼做了一些更改,它不再給出運(yùn)行時(shí)錯(cuò)誤,但我仍然對(duì)一些隱藏的測(cè)試用例有錯(cuò)誤的答案。如果您想嘗試問題鏈接:https://www.codechef.com/LRNDSA02/problems/NOTALLFL
查看完整描述

2 回答

?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

該代碼給出了輸入的錯(cuò)誤答案:

k = 2
array = [1, 2, 2, 1, 2, 2, 2, 2, 2]

更改應(yīng)該在第 18 行,即而不是

 diff = max(d[j][0], r - d[j][-1]-1)

它應(yīng)該是

 diff = max(d[j][0], n - d[j][-1]-1)

這是一個(gè)小錯(cuò)誤,但導(dǎo)致很多測(cè)試用例失敗。


查看完整回答
反對(duì) 回復(fù) 2023-05-09
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

考慮以下:

目標(biāo) = @,所有其他數(shù)字 = -。

A = { - - - @ - @ @ - - - - - - @ - @ - - - - - - - - - - - }

如果我們想找到不包含@的子數(shù)組,我們可以將整個(gè)數(shù)組視為被@包圍,這樣:

A` = { @ - - - @ - @ @ - - - - - - @ - @ - - - - - - - - - - - @ }

然后,這只是一個(gè)問題 - 跟蹤最后遇到的@的位置,以及連續(xù)兩次出現(xiàn)的@之間的最大差異。@ 可以是 1..k 之間的任何數(shù)字,因此可以通過大小為“k”的數(shù)組來跟蹤它。

C++ 代碼類似于(請(qǐng)測(cè)試 off-by-1 錯(cuò)誤,因?yàn)槲蚁M谀抢铮?/p>

int subarr(int* A, size_t n, int k)

{

   if (n < k)

   {

      return n;

   }


   size_t max = 0;

   std::vector<size_t> lastPos(k);

   for (size_t i = 0; i < lastPos.size(); i++)

   {

      lastPos[i] = -1;

   }


   // Find the longest subArray when excluding a single digit of the digits present.

   for (size_t i = 0; i < n; i++)

   {

     if ((i - lastPos[A[i]]) > max)

     {

        max = i - lastPos[A[i]];

     }

     lastPos[A[i]] = i;

   }


   // Check for last

   for (size_t i = 0; i < lastPos.size(); i++)

   {

     if ((i - lastPos[A[i]]) == -1)

     {

        return n;

     }

   }


   return max - 1;

}


查看完整回答
反對(duì) 回復(fù) 2023-05-09
  • 2 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)