Bird
Raised Fist0
C Sharp (C#)programming~5 mins

List methods (Add, Remove, Find, Sort) in C Sharp (C#) - Time & Space Complexity

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Time Complexity: List methods (Add, Remove, Find, Sort)
O(1) for Add, O(n) for Remove and Find, O(n log n) for Sort
Understanding Time Complexity

When using lists in C#, it's important to know how fast common actions like adding, removing, finding, and sorting items happen.

We want to understand how the time needed changes as the list grows bigger.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


List numbers = new List();
numbers.Add(5);
numbers.Add(10);
numbers.Remove(5);
int found = numbers.Find(x => x == 10);
numbers.Sort();
    

This code adds two numbers, removes one, finds a number, and then sorts the list.

Identify Repeating Operations
  • Primary operation: The list methods internally loop over elements for Remove, Find, and Sort.
  • How many times: Add is usually fast and simple, Remove and Find scan elements once, Sort compares many elements multiple times.
How Execution Grows With Input

Explain the growth pattern intuitively.

Input Size (n)Approx. Operations
10Add: 10, Remove/Find: up to 10, Sort: about 30
100Add: 100, Remove/Find: up to 100, Sort: about 700
1000Add: 1000, Remove/Find: up to 1000, Sort: about 10,000

Pattern observation: Add grows slowly, Remove and Find grow linearly, Sort grows faster, roughly like n times log n.

Final Time Complexity

Time Complexity: O(1) for Add, O(n) for Remove and Find, O(n log n) for Sort

This means adding is very fast, searching or removing takes longer as the list grows, and sorting takes even more time but still reasonable.

Common Mistake

[X] Wrong: "Adding items to a list always takes longer as the list grows because it has to move all elements."

[OK] Correct: Adding to the end of a list is usually very fast because it just places the item at the next free spot, except when the list needs to resize internally.

Interview Connect

Knowing how list methods behave helps you choose the right tool and explain your choices clearly in interviews.

Self-Check

"What if we used a LinkedList instead of a List? How would the time complexity of Add, Remove, and Find change?"

Practice

(1/5)
1. Which List method in C# is used to add a new item to the end of the list?
easy
A. Sort
B. Remove
C. Find
D. Add

Solution

  1. Step 1: Understand the purpose of Add

    The Add method appends a new element to the end of a list.
  2. Step 2: Compare with other methods

    Remove deletes items, Find searches, and Sort arranges items, so they don't add new items.
  3. Final Answer:

    Add -> Option D
  4. Quick Check:

    Add method adds items [OK]
Hint: Add puts new items at the list's end [OK]
Common Mistakes:
  • Confusing Remove with Add
  • Thinking Find adds items
  • Assuming Sort adds items
2. Which of the following is the correct syntax to remove the first occurrence of "apple" from a List<string> named fruits?
easy
A. fruits.RemoveAt("apple");
B. fruits.Delete("apple");
C. fruits.Remove("apple");
D. fruits.RemoveItem("apple");

Solution

  1. Step 1: Identify the correct method name

    The method to remove an item by value is Remove, so fruits.Remove("apple") is correct.
  2. Step 2: Check method parameters and usage

    RemoveAt requires an index, not a string. Delete and RemoveItem are not valid List methods.
  3. Final Answer:

    fruits.Remove("apple"); -> Option C
  4. Quick Check:

    Remove("apple") removes first matching item [OK]
Hint: Use Remove with the item value to delete it [OK]
Common Mistakes:
  • Using RemoveAt with a string argument
  • Using non-existent methods like Delete or RemoveItem
  • Confusing Remove with Add
3. What will be the output of the following C# code?
var numbers = new List<int> {5, 3, 8, 1};
numbers.Sort();
Console.WriteLine(string.Join(",", numbers));
medium
A. 5,3,8,1
B. 1,3,5,8
C. 8,5,3,1
D. 3,5,1,8

Solution

  1. Step 1: Understand what Sort does

    Sort arranges the list items in ascending order.
  2. Step 2: Apply Sort to the list

    The list {5, 3, 8, 1} sorted ascending becomes {1, 3, 5, 8}.
  3. Final Answer:

    1,3,5,8 -> Option B
  4. Quick Check:

    Sort orders numbers ascending [OK]
Hint: Sort arranges numbers from smallest to largest [OK]
Common Mistakes:
  • Assuming Sort reverses the list
  • Confusing Sort with Find
  • Expecting original order after Sort
4. Identify the error in this code snippet:
var fruits = new List<string> {"apple", "banana", "cherry"};
fruits.RemoveAt("banana");
medium
A. RemoveAt expects an index, not a string
B. RemoveAt cannot be used on List<string>
C. RemoveAt removes all matching items
D. RemoveAt adds an item instead of removing

Solution

  1. Step 1: Check RemoveAt parameter type

    RemoveAt requires an integer index, but "banana" is a string.
  2. Step 2: Understand method behavior

    Using a string causes a compile-time error because the argument type is wrong.
  3. Final Answer:

    RemoveAt expects an index, not a string -> Option A
  4. Quick Check:

    RemoveAt needs index integer [OK]
Hint: RemoveAt uses index number, not item value [OK]
Common Mistakes:
  • Passing item value instead of index to RemoveAt
  • Thinking RemoveAt removes all matches
  • Confusing RemoveAt with Remove
5. Given a List<int> numbers = new List<int> {4, 7, 2, 9, 3}; which code snippet correctly finds the first number greater than 5 and removes it from the list?
hard
A. var num = numbers.Find(n => n > 5); numbers.Remove(num);
B. numbers.RemoveAt(numbers.Find(n => n > 5));
C. numbers.Remove(numbers.FindIndex(n => n > 5));
D. numbers.Remove(numbers.Find(n => n < 5));

Solution

  1. Step 1: Use Find to get first number > 5

    Find returns the first element matching the condition n > 5, which is 7.
  2. Step 2: Remove that number from the list

    Remove(num) deletes the first occurrence of 7 from the list.
  3. Final Answer:

    var num = numbers.Find(n => n > 5); numbers.Remove(num); -> Option A
  4. Quick Check:

    Find returns item, Remove deletes it [OK]
Hint: Find returns item; Remove deletes that item [OK]
Common Mistakes:
  • Passing Find result directly to RemoveAt (wrong type)
  • Using FindIndex result with Remove (expects item, not index)
  • Searching for wrong condition (n < 5 instead of n > 5)