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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

2 回答

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

TA貢獻1862條經(jīng)驗 獲得超6個贊

該代碼給出了輸入的錯誤答案:

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)

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


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

TA貢獻1874條經(jīng)驗 獲得超12個贊

考慮以下:

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

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

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

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

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

C++ 代碼類似于(請測試 off-by-1 錯誤,因為我希望它在那里:

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;

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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