using System;
using System.Collections.Generic;
/*
Goal:
-----
Find the minimal value of (a[i] + a[j]) for any two distinct elements in a list.
Efficient Strategy (O(n)):
--------------------------
The smallest possible sum of two distinct elements is obtained by:
- finding the smallest element
- finding the second smallest element
Because any other pair must be >= one of these two.
We scan the list once, keeping track of:
- min1 = smallest element seen so far
- min2 = second smallest element seen so far
*/
class MinimalTwoSumProgram
{
// A function that computes the minimal sum of two distinct elements.
public static int MinimalTwoSum(List<int> lst)
{
// Handle edge case: need at least two elements
if (lst.Count < 2)
{
throw new ArgumentException("List must contain at least two elements.");
}
// Initialize min1 and min2 to very large values
int min1 = int.MaxValue;
int min2 = int.MaxValue;
// Single pass through the list
foreach (int x in lst)
{
if (x < min1)
{
// x becomes the new smallest; old min1 becomes min2
min2 = min1;
min1 = x;
}
else if (x < min2)
{
// x is not the smallest, but smaller than the second smallest
min2 = x;
}
}
// The minimal sum of two distinct elements
return min1 + min2;
}
static void Main()
{
List<int> lst = new List<int> { 7, -3, 10, 1, 5, 2, 4 };
try
{
int result = MinimalTwoSum(lst);
Console.WriteLine("Minimal sum of two elements: " + result);
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
}
}
/*
run:
Minimal sum of two elements: -2
*/
using System;
using System.Collections.Generic;
/*
Goal:
-----
Find the minimal value of (a[i] + a[j]) for any two distinct elements in an array.
Efficient Strategy (O(n)):
--------------------------
The smallest possible sum of two distinct elements is obtained by:
- finding the smallest element
- finding the second smallest element
Because any other pair must be >= one of these two.
We scan the array once, keeping track of:
- min1 = smallest element seen so far
- min2 = second smallest element seen so far
*/
class MinimalTwoSumProgram
{
// A function that computes the minimal sum of two distinct elements.
public static int MinimalTwoSum(List<int> lst)
{
// Handle edge case: need at least two elements
if (lst.Count < 2)
{
throw new ArgumentException("Array must contain at least two elements.");
}
// Initialize min1 and min2 to very large values
int min1 = int.MaxValue;
int min2 = int.MaxValue;
// Single pass through the array
foreach (int x in lst)
{
if (x < min1)
{
// x becomes the new smallest; old min1 becomes min2
min2 = min1;
min1 = x;
}
else if (x < min2)
{
// x is not the smallest, but smaller than the second smallest
min2 = x;
}
}
// The minimal sum of two distinct elements
return min1 + min2;
}
static void Main()
{
List<int> lst = new List<int> { 7, -3, 10, 1, 5, 2, 4 };
try
{
int result = MinimalTwoSum(lst);
Console.WriteLine("Minimal sum of two elements: " + result);
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message);
}
}
}
/*
run:
Minimal sum of two elements: -2
*/