這篇文章將為大家詳細(xì)講解有關(guān)leetcode如何實(shí)現(xiàn)重復(fù)至少K次且長(zhǎng)度為M的模式,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元蓮池做網(wǎng)站,已為上家服務(wù),為蓮池各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
給你一個(gè)正整數(shù)數(shù)組 arr,請(qǐng)你找出一個(gè)長(zhǎng)度為 m 且在數(shù)組中至少重復(fù) k 次的模式。
模式 是由一個(gè)或多個(gè)值組成的子數(shù)組(連續(xù)的子序列),連續(xù) 重復(fù)多次但 不重疊 。模式由其長(zhǎng)度和重復(fù)次數(shù)定義。
如果數(shù)組中存在至少重復(fù) k 次且長(zhǎng)度為 m 的模式,則返回 true ,否則返回 false 。
示例 1:
輸入:arr = [1,2,4,4,4,4], m = 1, k = 3
輸出:true
解釋:模式 (4) 的長(zhǎng)度為 1 ,且連續(xù)重復(fù) 4 次。注意,模式可以重復(fù) k 次或更多次,但不能少于 k 次。
示例 2:
輸入:arr = [1,2,1,2,1,1,1,3], m = 2, k = 2
輸出:true
解釋:模式 (1,2) 長(zhǎng)度為 2 ,且連續(xù)重復(fù) 2 次。另一個(gè)符合題意的模式是 (2,1) ,同樣重復(fù) 2 次。
示例 3:
輸入:arr = [1,2,1,2,1,3], m = 2, k = 3
輸出:false
解釋:模式 (1,2) 長(zhǎng)度為 2 ,但是只連續(xù)重復(fù) 2 次。不存在長(zhǎng)度為 2 且至少重復(fù) 3 次的模式。
示例 4:
輸入:arr = [1,2,3,1,2], m = 2, k = 2
輸出:false
解釋:模式 (1,2) 出現(xiàn) 2 次但并不連續(xù),所以不能算作連續(xù)重復(fù) 2 次。
示例 5:
輸入:arr = [2,2,2,2], m = 2, k = 3
輸出:false
解釋:長(zhǎng)度為 2 的模式只有 (2,2) ,但是只連續(xù)重復(fù) 2 次。注意,不能計(jì)算重疊的重復(fù)次數(shù)。
提示:
2 <= arr.length <= 100
1 <= arr[i] <= 100
1 <= m <= 100
2 <= k <= 100
解題思路
1,因?yàn)槭沁B續(xù)重復(fù)問題比較簡(jiǎn)單,從第一個(gè)位置開始查找,然后步長(zhǎng)為m迭代,統(tǒng)計(jì)次數(shù),不重復(fù)就終止
2,記錄次數(shù),看次數(shù)是否滿足條件
3,如果去掉連續(xù)重復(fù)條件呢?迭代步長(zhǎng)改為1即可,只有重復(fù)的時(shí)候才會(huì)跳轉(zhuǎn)m步
代碼實(shí)現(xiàn)
func containsPattern(arr []int, m int, k int) bool {
l:=len(arr)
if l<1{
return m==0&&k==0
}
for i:=0;i<l-m;i++{
count:=1
for j:=i+m;j<l-m+1;j+=m{
if same(arr,i,j,m){
count++
}else{
break
}
}
if count>=k{
return true
}
}
return false
}
func same(arr []int ,i,j,m int)bool{
for k:=0;k<m;k++{
if arr[i+k]!=arr[j+k]{
return false
}
}
return true
}
func containsPattern(arr []int, m int, k int) bool {
l:=len(arr)
if l<1{
return m==0&&k==0
}
ma:=make([]int,l-m)
for i:=0;i<l-m;i++{
for j:=i+m;j<l-m+1;j++{
if same(arr,i,j,m){
ma[i]++
j+=m-1
}
// fmt.Println(i,j)
}
if ma[i]>=k-1{
return true
}
}
fmt.Println(ma)
return false
}
func same(arr []int ,i,j,m int)bool{
for k:=0;k<m;k++{
if arr[i+k]!=arr[j+k]{
return false
}
}
return true
}
關(guān)于“l(fā)eetcode如何實(shí)現(xiàn)重復(fù)至少K次且長(zhǎng)度為M的模式”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
分享文章:leetcode如何實(shí)現(xiàn)重復(fù)至少K次且長(zhǎng)度為M的模式
文章出自:http://aaarwkj.com/article4/jjgjie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站、Google、App開發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)