יש דרך בo(n) ויש דרך יותר יעילה אותה הם מחפשים בlog(n)
ספטמבר 2025
באותה דרך בה ממירים מספר מייצוג דצימלי לייצוג בינארי - עושים מודלו 2 וחילוק ב-2, וזה נותן ספרה אחת. חוזרים על התהליך עד שהמספר מתאפס.
דרך נוספת: אפשר לעשות פעולות על ביטים - למשל num & 1 (ולא [!] num && 1) וככה להשוות את הביט האחרון.
דצמבר 2025
דרך חכמה היא להמיר את המספר שמיוצג בינארית למחרוזת ואז לספור את מספר התווים ׳1׳ ואז להחזיר את מספר התווים שהם ׳1׳.
נתון מערך עם N-1 איברים שכל איבר הוא מהתחום 1-N, כלומר ספרה אחרת מהטווח חסרה. כתוב קוד שמוצא מהי הספרה החסרה
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2025
תחשב סכום הסידרה של אן פחות 1 איברים, תעבור על המערך ותסכום את כל האיברים ותחסר בין סכום הסידרה לבין סכום איברי המערך וזו הסיפרה החסרה
ספטמבר 2025
דרך נוספת היא ליצור מערך בן N-1 איברים, לעבור על המערך המקורי ולסמן במערך החדש כל איבר שמופיע בו ( new[old[i]] = true ) ואז לעבור על המערך החדש ולהחזיר את האיבר שמקיים new[i] = false.
סיבוכיות מקום גרועה, סיבוכיות זמן O(n). (פתרון קודם עדיף)
צור hash שהמפתח שלו הוא ערך האיברים במערך והערך שלו הוא מספר המופעים של המפתח במערך.
עבור פעם אחת על המערך ותעדכן את ה-hash.
עבור על ה-hash פעם אחת ותמצא את האיבר המקסימלי בו.
סיבוכיות: O(n).
דצמבר 2025
אין צורך לעבור על ההאש, אפשר לשמור משתנה שיכיל את מקס ולעדכן אם גבוה מהערך הקיים שמעדכנים.