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.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Sum of product of r and rth Binomial Coefficient (r * nCr)
- Eggs dropping puzzle (Binomial Coefficient and Binary Search Solution)
- Maximum binomial coefficient term value
- Central binomial coefficient
- Binomial Coefficient | DP-9
- Space efficient iterative method to Fibonacci number
- Fibonomial coefficient and Fibonomial triangle
- Permutation Coefficient
- Clustering Coefficient in Graph Theory
- Program to find correlation coefficient
- Replace the maximum element in the array by coefficient of range
- Find the largest multiple of 3 from array of digits | Set 2 (In O(n) time and O(1) space)
- Merge Sort with O(1) extra space merge and O(n lg n) time
- 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
- Mathematics | PnC and Binomial Coefficients
- Check for balanced parentheses in an expression | O(1) space | O(N^2) time complexity
- Binomial Random Variables
- Corollaries of Binomial Theorem
- Sum of Binomial coefficients