Mô tả bài toán
Viết chương trình Console, với Phương thức SumSmallest tính tổng 2 số nhỏ nhất trong danh sách, với các trường hợp test case như sau:
//SumSmallest([19, 5, 42, 2, 77]) ➞ 7
//SumSmallest([10, 343445353, 3453445, 3453545353453]) ➞ 3453455
//SumSmallest([2, 9, 6, -1]) ➞ 8
//SumSmallest([879, 953, 694, -847, 342, 221, -91, -723, 791, -587]) ➞ 563
//SumSmallest([3683, 2902, 3951, -475, 1617, -2385]) ➞ 4519
Cách giải quyết
- Sử dụng
List<int> để tạo danh sách động lưu trữ các con số do người dùng nhập vào.
- Sử dụng
LINQ ,
- Hàm
Where để lọc các điều kiện con số phải > 0
- Hàm
OrderBy để sắp xếp các con số theo thứ tự từ Nhỏ -> Lớn
- Hàm
Take(2) để lấy 2 phần tử đầu tiên trong danh sách sau khi sắp xếp
- Hàm
sum() để tính tổng các số
Source code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SumTwoSmallestNumber
{
class Program
{
//SumSmallest([19, 5, 42, 2, 77]) ➞ 7
//SumSmallest([10, 343445353, 3453445, 3453545353453]) ➞ 3453455
//SumSmallest([2, 9, 6, -1]) ➞ 8
//SumSmallest([879, 953, 694, -847, 342, 221, -91, -723, 791, -587]) ➞ 563
//SumSmallest([3683, 2902, 3951, -475, 1617, -2385]) ➞ 4519
public static int SumSmallest(List<int> lstNumber)
{
return lstNumber.Where(z => z > 0).OrderBy(z => z).Take(2).Sum();
}
static void Main(string[] args)
{
List<int> lstNumber = new List<int>();
bool isContinue = true;
do
{
Console.Write("Input number (enter N for quit): ");
string input = Console.ReadLine();
if(input == "N")
{
isContinue = false;
break;
}
int numberInput = Convert.ToInt32(input);
lstNumber.Add(numberInput);
} while (isContinue);
Console.WriteLine("Sum of Two smallest number is: {0}", SumSmallest(lstNumber));
Console.ReadKey();
}
}
}
Github
https://github.com/kellyfire611/learning.nentang.vn-csharp/blob/master/src/SumTwoSmallestNumber/Program.cs
|