Tôi nhận được một Danh sách đơn giản của int.Xác định giá trị sẵn có đầu tiên trong danh sách các số nguyên
List<int> myInts = new List<int>();
myInts.Add(0);
myInts.Add(1);
myInts.Add(4);
myInts.Add(6);
myInts.Add(24);
Mục tiêu của tôi là lấy giá trị chưa sử dụng đầu tiên (có sẵn) từ Danh sách.
(giá trị tích cực đầu tiên đó là chưa có mặt trong bộ sưu tập)
Trong trường hợp này, câu trả lời sẽ là 2.
Đây là mã hiện tại của tôi:
int GetFirstFreeInt()
{
for (int i = 0; i < int.MaxValue; ++i)
{
if(!myInts.Contains(i))
return i;
}
throw new InvalidOperationException("All integers are already used.");
}
Có cách tốt hơn? Có thể sử dụng LINQ? Bạn sẽ làm điều này như thế nào?
Tất nhiên ở đây tôi sử dụng ints cho đơn giản nhưng câu hỏi của tôi có thể áp dụng cho bất kỳ loại nào.
Danh sách có được sắp xếp theo thứ tự tăng dần không? –
@OsmanTuran Nope. Danh sách không được bảo đảm để được sắp xếp theo bất kỳ cách nào. Xin lỗi tôi quên đề cập đến điều đó. – asmo