Menu
CoddyTech

Number of Provinces

יש n ערים, שממוספרות מ־0 עד n-1. נתונה לך מטריצה בגודל n × n בשם isConnected כרשימה של שורות: isConnected[i][j] הוא 1 כשכביש מחבר ישירות בין עיר i לעיר j, ו־0 כשאין כביש כזה. הכבישים פועלים בשני הכיוונים, לכן המטריצה סימטרית, וכל עיר נחשבת כמחוברת לעצמה.

מחוז הוא קבוצה של ערים שכולן יכולות להגיע זו לזו, ישירות או דרך ערים אחרות, ושאין כביש שיוצא מהקבוצה. החזר את מספר המחוזות.

פונקציה

findCircleNum(isConnected: integer-2d-array) → integer
isConnectedinteger-2d-array
מטריצת n × n, שבה הערך הוא 1 כאשר כביש מחבר בין שתי ערים ישירות
מחזירהinteger
מספר המחוזות

אילוצים

  • 1 ≤ n ≤ 150, כאשר n = isConnected.length
  • isConnected[i].length = n
  • isConnected[i][j] הוא 0 או 1
  • isConnected[i][i] = 1
  • isConnected[i][j] = isConnected[j][i]

דוגמאות

קלט
isConnected = [[1, 0, 0, 1], [0, 1, 1, 0], [0, 1, 1, 0], [1, 0, 0, 1]]
פלט
2
הסבר
לעיר 0 יש כביש לעיר 3, ולעיר 1 יש כביש לעיר 2. אין כביש שמחבר בין שני הזוגות, ולכן יש 2 מחוזות.

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

challenge icon

שאלת המשך

כל כביש נפתח כעת ביום נתון. האם תוכל למצוא את היום הראשון שבו כל הערים שייכות למחוז אחד?

איפוס הקוד
def findCircleNum(isConnected):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

קלט

isConnected = [[1, 0, 0, 1], [0, 1, 1, 0], [0, 1, 1, 0], [1, 0, 0, 1]]

צפוי

2