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