Given an array arr[] consisting of N components. At every operation, you possibly can choose any 2 adjoining components wherein each the weather are of the identical parity after which delete each of them, and insert their product in the identical place, the duty is to search out the minimal variety of operations wanted for this.
Examples:
Enter : arr[] = {3, 5, 7, 8, 9}
Output : Minimal Operation = 2
Clarification : first we’ll choose first 2 indices with worth 3 and 5 then our new array will turn into {15, 7, 8, 9}after which once more we’ll choose first 2 indices and new array might be {105, 8, 9} Therefore, After 2 operations each adjoining component of our array might be of various parity.Enter : arr[] = {1, 4, 7, 10}
Output : Minimal Operation = 0
Clarification : Every adjoining pair is of various parity.
Method: To unravel the issue comply with the beneath observations:
Observations:
We all know that,
- Even * Even = Even
- Odd * Odd = Odd
- Odd * Even = Even
Now, If we took a better have a look at every operation as effectively downside assertion we’ll discover that if adjoining components are each even or each odd then we’ll improve our depend by one. As a result of if they’re already of various parity we don’t have to vary in any other case their product might be of the identical parity.
Beneath is the implementation for the above strategy:
C++
|
Minimal Operation = 2
Time Complexity: O(N), the place N represents the scale of the given array.
Auxiliary Area: O(1), no additional house is required, so it’s a fixed.