DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

1

Count Number of Teams

There are n soldiers standing in a line. Each soldier is assigned a unique rating value.

You have to form a team of 3 soldiers amongst them under the following rules:

  • Choose 3 soldiers with index (i, j, k) with rating (rating[i], rating[j], rating[k]).
  • A team is valid if: (rating[i] < rating[j] < rating[k]) or (rating[i] > rating[j] > rating[k]) where (0 <= i < j < k < n).

Return the number of teams you can form given the conditions. (soldiers can be part of multiple teams).

Example 1:

Input: rating = [2,5,3,4,1]
Output: 3
Explanation: We can form three teams given the conditions. (2,3,4), (5,4,1), (5,3,1).

Example 2:

Input: rating = [2,1,3]
Output: 0
Explanation: We can't form any team given the conditions.

Example 3:

Input: rating = [1,2,3,4]
Output: 4

Constraints:

  • n == rating.length
  • 3 <= n <= 1000
  • 1 <= rating[i] <= 105
  • All the integers in rating are unique.

SOLUTION:

class Solution:
    def numTeams(self, rating: List[int]) -> int:
        n = len(rating)
        bigger = {}
        smaller = {}
        for i in range(n):
            for j in range(i + 1, n):
                if rating[i] > rating[j]:
                    smaller[i] = smaller.get(i, []) + [j]
                if rating[i] < rating[j]:
                    bigger[i] = bigger.get(i, []) + [j]
        total = 0
        for a in bigger:
            for b in bigger.get(a, []):
                total += len(bigger.get(b, []))
        for a in smaller:
            for b in smaller.get(a, []):
                total += len(smaller.get(b, []))
        return total
Enter fullscreen mode Exit fullscreen mode

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post →

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay