1823 陣列的最長字首

2022-02-15 01:22:55 字數 1287 閱讀 8781

中文english

給定兩個正整數x和y,以及正整數陣列nums。

我們需要找到乙個最大的index,使得在nums[0], nums[1], .... , nums[index]中,出現x、y的次數相等,且至少均出現一次,返回該index。

若不存在這樣的index,則返回-1。

示例 1:

輸入:x = 2

y = 4

nums: [1, 2, 3, 4, 4, 3]

輸出: 3

解釋: 保證 2 和 4 出現相同次數的最長字首是: ,所以你應該返回3。

示例 2:

輸入:x = 7

y = 42

nums = [7、42、5、6、42、8、7、5、3、6、7]

輸出:9

解釋:保證7和42出現相同次數的最長字首是:,所以你應該返回9。

示例 3:

輸入:x = 1

y = 10

nums: [2, 3, 1]

輸出:-1

解釋:不存在字首使得 1 和 10 都出現且出現次數相同的情況

輸入測試資料 (每行乙個引數)如何理解測試資料?

class

solution:

"""@param x: a integer

@param y: a integer

@param nums: a list of integer

@return:

return

the maximum index of largest prefix

"""'''

大致思路:

1.初始化p,和c_x和c_y,如果兩者相等,則更新p=i,並且c_x不能為0的前提,最後如果p為0,則返回-1

,否則返回p。

'''def longestprefix(self, x, y, nums):

p = 0

c_x,c_y = 0,0

for i in

range(len(nums)):

if nums[i] ==x:

c_x += 1

elif nums[i] ==y:

c_y += 1

#不為0才進來

if c_x == c_y and c_x != 0

: p =i

return -1

if p == 0

else p

字尾陣列 LCP(最長公共字首)

sa sa陣列儲存的是乙個1 n的全排列,儲存的是 將所有字尾按字典序排序後,串在原串中的位置。即有suffix sa i suffix sa i 1 rank rank陣列儲存的是 suffix i 在所有字尾中按字典序排序的 名次 總結 字尾陣列是 排第幾的是誰?名次陣列是 你排第幾?lcp i...

字尾陣列之最長公共字首

include define maxn 100 int main s maxn s串可以看成abcbc int i,j,k 0 for i 0 i 5 i rank sa i i for i 0 i 5 i if k k j sa rank i 1 當rank k 不等於0的時候,rank i 1計...

隨筆 求字元陣列最長公共字首

題目 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 思路 找乙個基點,比如字元陣列0號...