תיאור השאלה
Given two integers n and k, return all possible combinations of k numbers chosen from the range [1, n]. The answer can be in any order.
איך פותרים?
Backtracking: בונים צירוף בהדרגה. בכל שלב בוחרים מספר גדול מהאחרון שנבחר, ממשיכים ברקורסיה ומוציאים אותו בחזרה. כשהצירוף הגיע לאורך k שומרים עותק. גיזום: לא מתחילים ממספר שאין אחריו מספיק מספרים להשלמה.
פתרון קוד
JavaScript
Python
function combine(n, k) {
const result = [];
const current = [];
function backtrack(start) {
if (current.length === k) {
result.push([...current]);
return;
}
for (let i = start; i <= n - (k - current.length) + 1; i++) {
current.push(i);
backtrack(i + 1);
current.pop();
}
}
backtrack(1);
return result;
}
לעבור את ראיון העבודה הבא שלך בהצלחה
קורס דיגיטלי מקיף עם +25 שיעורים מעשיים, כשעתיים של וידאו, וליווי של מראיין בכיר.