- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find minimum numbers of function calls to make target array using Python
Suppose we have following function definition:
def modify(arr, op, index): if op == 0: arr[index] += 1 if op == 1: for i in range(len(arr)): arr[i] *=2
We have to find minimum number of function calls required to make a given array nums from one zero array of same size?
So, if the input is like nums = [1,5,3], then the output will be 7 because, initially all elements are 0, [0,0,0]
At first step increase second element by 1, so array is [0,1,0]
Double second element to make it [0,2,0]
Increase third element by 1, so array is [0,2,1]
Double elements from index 1 to 2, so array is [0,4,2]
Increase all elements by 1 [three operations in total here]
so total 3+4 = 7 operations required.
To solve this, we will follow these steps −
ans := an array with two elements all are 0
for each n in nums, do
double := 0
while n is non-zero, do
if n is odd, then
n := quotient of n/2
double := double + 1
otherwise,
n := n - 1
ans[0] := ans[0] + 1
ans[1] := maximum of ans[1] and double
return sum of all elements of ans
Let us see the following implementation to get better understanding −
Example
def solve(nums): ans = [0, 0] for n in nums: double = 0 while(n): if not n%2: n = n//2 double+=1 else: n-=1 ans[0]+=1 ans[1] = max(ans[1], double) return sum(ans) nums = [1,5,3] print(solve(nums))
Input
[1,5,3]
Output
7