สมมติว่าเรามีจำนวนอาร์เรย์ที่มีค่าบวก เราต้องหารูปแบบของความยาว m ที่ซ้ำกัน k หรือมากกว่า k ครั้ง รูปแบบนี้เป็นอาร์เรย์ย่อยที่ไม่ทับซ้อนกัน (ต่อเนื่องกัน) ที่ประกอบด้วยค่าตั้งแต่หนึ่งค่าขึ้นไปและมีการทำซ้ำหลายครั้ง รูปแบบถูกกำหนดโดยความยาวและจำนวนการทำซ้ำ เราต้องตรวจสอบว่ามีรูปแบบของความยาว m ซ้ำ k หรือมากกว่านั้นหรือไม่
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,5,1,4,3,1,4,3,1,4,3,9,6,1], m =3, k =2 แล้วผลลัพธ์ที่ได้ จะเป็น True เพราะมีรูปแบบ [1,4,3] ซึ่งมีอยู่ 3 ครั้ง
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ
-
sub1 :=อาร์เรย์ย่อยของ nums จากดัชนี i ถึง (i+m*k) - 1
-
sub2 :=k อาร์เรย์ย่อยที่ต่อเนื่องกันของ nums จากดัชนี i ถึง (i+m-1)
-
ถ้า sub1 เหมือนกับ sub2 แล้ว
-
คืนค่า True
-
-
-
คืนค่าเท็จ
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(nums, m, k): for i in range(len(nums)): sub1 = nums[i:i+m*k] sub2 = nums[i:i+m]*k if sub1 == sub2: return True return False nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1] m = 3 k = 2 print(solve(nums, m, k))
อินพุต
[3,5,1,4,3,1,4,3,1,4,3,9,6,1], 3, 2
ผลลัพธ์
True