Menu
CoddyTech

Flood Fill

קלגרפיםpython iconjava iconcpp iconc iconjs icon+10

תמונה היא רשת של מספרים שלמים, כאשר כל מספר מייצג את הצבע של פיקסל אחד. התמונה ניתנת לך כרשימה של שורות, פיקסל התחלתי בשורה sr ובעמודה sc, וcolor חדש. צבע מחדש את האזור שמכיל את הפיקסל ההתחלתי: כל פיקסל שצבעו זהה לצבע הפיקסל ההתחלתי ושאפשר להגיע אליו ממנו באמצעות מעבר למעלה, למטה, שמאלה או ימינה דרך פיקסלים באותו הצבע. החזר את התמונה לאחר הצביעה מחדש.

פונקציה

floodFill(image: integer-2d-array, sr: integer, sc: integer, color: integer) → integer-2d-array
imageinteger-2d-array
התמונה כרשימת שורות, מספר אחד לכל פיקסל
srinteger
השורה של הפיקסל ההתחלתי, כשהספירה מתחילה מ־0
scinteger
העמודה של הפיקסל ההתחלתי, בספירה מ-0
colorinteger
הצבע החדש לאזור
מחזירהinteger-2d-array
התמונה לאחר שהאזור נצבע מחדש

אילוצים

  • 1 ≤ image.length ≤ 80
  • 1 ≤ image[i].length ≤ 80
  • לכל השורות יש אותו אורך.
  • 0 ≤ image[i][j], color ≤ 65535
  • 0 ≤ sr < image.length וגם 0 ≤ sc < image[0].length

דוגמאות

קלט
image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]sr = 0sc = 0color = 5
פלט
[[5, 5, 0], [5, 0, 5], [5, 5, 5]]
הסבר
בתחילת הלוח נמצא צבע 1. ה־1 שמימינו, ה־1ים לאורך העמודה השמאלית והשורה התחתונה, וה־1 שמעל לפינה הימנית התחתונה — כולם מחוברים אליו, ולכן כל השבעה הופכים ל־5. שני ה־0ים הם בצבע אחר ונשארים כפי שהם.

lock icon+18 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

איך הפתרון שלך היה משתנה אילו גם פיקסלים שנוגעים זה בזה רק בפינה היו נחשבים למחוברים?

איפוס הקוד
def floodFill(image, sr, sc, color):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

image = [[1, 1, 0], [1, 0, 1], [1, 1, 1]]
sr = 0
sc = 0
color = 5

צפוי

[[5, 5, 0], [5, 0, 5], [5, 5, 5]]