Time Complexity Issues!

Test Result

846. Hand of Straights

Alice has some number of cards and she wants to rearrange the cards into groups so that each group is of size groupSize, and consists of groupSize consecutive cards.

Given an integer array hand where hand[i] is the value written on the ith card and an integer groupSize, return true if she can rearrange the cards, or false otherwise.

Example 1:

Input: hand = [1,2,3,6,2,3,4,7,8], groupSize = 3
Output: true
Alice’s hand can be rearranged as [1,2,3],[2,3,4],[6,7,8]

Example 2:

Input: hand = [1,2,3,4,5], groupSize = 4
Output: false
Explanation: Alice’s hand can not be rearranged into groups of 4.


  • 1 <= hand.length <= 104
  • 0 <= hand[i] <= 109
  • 1 <= groupSize <= hand.length

here is the part of the solution

hand.sort((a, b) => a - b);
for (const card of hand) {
            for (let i = 0; i < groupSize; i++) {

gpt respose

  1. Sorting Step: The time complexity of sorting the hand array is (O(n log n)). This is the dominating factor in the overall time complexity.

  2. Iteration through Sorted Cards: After sorting, we iterate through the sorted cards once, which takes (O(n)) time.

  3. Inner Loop for Group Formation: Within each iteration of the outer loop, the inner loop runs for a constant number of times, determined by the problem’s constraints. Therefore, the inner loop’s time complexity is effectively (O(1)) within the scope of each outer loop iteration.

  4. Overall Time Complexity: Considering the sorting step’s time complexity as (O(n log n))and the subsequent linear iteration through the sorted array ((O(n))), the overall time complexity is (O(n log n)) since (n log n) dominates (n).

I understand 1 , 2 time complexities, but why 3rd one is O(1) i.e inner loop, it depends on the groupSize in worst case group size may be n, so woudn’t it be O(n) instead of O(1)

i appreciate all your responses. I am sorry , if you might have been rude, while reading my post. :slight_smile: