Write a function that takes two parameters n and k and returns the value of Binomial Coefficient C(n, k). For example, your function should return 6 for n = 4 and k = 2, and it should return 10 for n = 5 and k = 2.
We have discussed a O(n*k) time and O(k) extra space algorithm in this post. The value of C(n, k) can be calculated in O(k) time and O(1) extra space.
C(n, k) = n! / (n-k)! * k! = [n * (n-1) *....* 1] / [ ( (n-k) * (n-k-1) * .... * 1) * ( k * (k-1) * .... * 1 ) ] After simplifying, we get C(n, k) = [n * (n-1) * .... * (n-k+1)] / [k * (k-1) * .... * 1] Also, C(n, k) = C(n, n-k) // we can change r to n-r if r > n-r
Following implementation uses above formula to calculate C(n, k)
Value of C(8, 2) is 28
Time Complexity: O(k)
Auxiliary Space: O(1)
This article is compiled by Aashish Barnwal and reviewed by GeeksforGeeks team. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Binomial Coefficient | DP-9
- Sum of product of r and rth Binomial Coefficient (r * nCr)
- Maximum binomial coefficient term value
- Eggs dropping puzzle (Binomial Coefficient and Binary Search Solution)
- Space efficient iterative method to Fibonacci number
- Find the largest multiple of 3 from array of digits | Set 2 (In O(n) time and O(1) space)
- Dynamic Programming | Wildcard Pattern Matching | Linear Time and Constant Space
- Merge Sort with O(1) extra space merge and O(n lg n) time
- Permutation Coefficient
- Clustering Coefficient in Graph Theory
- Program to find correlation coefficient
- Minimum time to reach a point with +t and -t moves at time t
- Replace the maximum element in the array by coefficient of range
- Sum of Binomial coefficients
- Binomial Random Variables