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.
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Binomial Coefficient | DP-9
- Central binomial coefficient
- 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
- Check for balanced parentheses in an expression | O(1) space | O(N^2) time complexity
- Find the largest multiple of 3 from array of digits | Set 2 (In O(n) time and O(1) space)
- 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
- Program to find correlation coefficient
- Clustering Coefficient in Graph Theory
- Replace the maximum element in the array by coefficient of range
- Sum of Binomial coefficients
- Mathematics | PnC and Binomial Coefficients
- Sum of squares of binomial coefficients
- Binomial Random Variables
- Corollaries of Binomial Theorem