Write a function that takes two parameters n and k and returns the value of Binomial Coefficient C(n, k).
Input: n = 4 and k = 2 Output: 6 Explanation: 4 C 2 is 4!/(2!*2!) = 6 Input: n = 5 and k = 2 Output: 10 Explanation: 5 C 2 is 5!/(3!*2!) = 20
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) // r can be changed to n-r if r > n-r
- Change r to n-r if r is greater than n-r. and create a variable to store the answer.
- Run a loop from 0 to r-1
- In every iteration update ans as (ans*(n-i))/(i+1) where i is the loop counter.
- So the answer will be equal to ((n/1)*((n-1)/2)*…*((n-r+1)/r!) which is equal to nCr.
Following implementation uses above formula to calculate C(n, k).
Value of C(8, 2) is 28
- Time Complexity: O(r).
A loop has to be run from 0 to r. So, the time complexity is O(r).
- Auxiliary Space: O(1).
As no extra space is required.
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.
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- 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)
- Check for balanced parentheses in an expression | O(1) space | O(N^2) time complexity
- Count Possible Decodings of a given Digit Sequence in O(N) time and Constant Auxiliary 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
- Replace the maximum element in the array by coefficient of range
- Sum of Binomial coefficients