חיבור של 3 מספרים
נותנים מערך לא מסודר ומספר שצריך להגיעה עליו ע''י חיבור של 3 מספרים מהמערך הנתון. יש להחזיר רשימה של triplets שסכום של כל Triplet יהיה שווה למספר מטרה.
- /*Example: */
- //array: [12, 3, 1, 2, -6, 5, -8, 6]
- //target = 0
- //Result: [[-8, 2, 6], [-8, 3, 5], [-6, 1, 5]]
- public List<int[]> ThreeNumberSum(int array, int targetSum) {
- Array.Sort(array);
- List<int[]> triplets = new List<int[]>();
- for(int i = 0; i < array.Length-2;i++) {
- int left = i + 1;
- int right = array.Length - 1;
- while(left < right) {
- int sum = array[i] + array[left] + array[right];
- if(sum == targetSum) {
- int[] tr = {array[i], array[left], array[right]};
- triplets.Add(tr);
- left++;
- right--;
- }
- else if(sum < targetSum) {
- left++;
- }
- else {
- right--;
- }
- }
- }
- return triplets;
- }