Menu
CoddyTech

Counting Bits

נתון לך מספר שלם n שהוא 0 או יותר. עבור כל מספר i מ-0 עד n, ספר כמה פעמים מופיעה הספרה 1 כשכותבים את i בבינארי. החזר את הספירות כמערך של n+1 איברים, כאשר האיבר i הוא מספר הפעמים שהספרה 1 מופיעה במספר i.

פונקציה

countBits(n: integer) → integer-array
ninteger
המספר האחרון לספירה, 0 או יותר
מחזירהinteger-array
מערך של n+1 ספירות, כאשר הערך במקום i הוא מספר הביטים שערכם 1 ב־i

אילוצים

  • 0 ≤ n ≤ 2 × 104

דוגמאות

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

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

challenge icon

שאלת המשך

האם תוכל למלא את המערך כולו בזמן O(n), בלי להשתמש בפונקציה מובנית שסופרת ביטים ובלי לספור כל מספר מההתחלה?

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

מקרה 1

מקרה 2

קלט

n = 2

צפוי

[0, 1, 1]