-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path. Minimum Operations to Make Array Equal to Target
70 lines (45 loc) · 1.77 KB
/
. Minimum Operations to Make Array Equal to Target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
You are given two positive integer arrays nums and target, of the same length.
In a single operation, you can select any subarray of nums and increment or decrement each element within that subarray by 1.
Return the minimum number of operations required to make nums equal to the array target.
Example 1:
Input: nums = [3,5,1,2], target = [4,6,2,4]
Output: 2
Explanation:
We will perform the following operations to make nums equal to target:
- Increment nums[0..3] by 1, nums = [4,6,2,3].
- Increment nums[3..3] by 1, nums = [4,6,2,4].
Example 2:
Input: nums = [1,3,2], target = [2,1,4]
Output: 5
Explanation:
We will perform the following operations to make nums equal to target:
- Increment nums[0..0] by 1, nums = [2,3,2].
- Decrement nums[1..1] by 1, nums = [2,2,2].
- Decrement nums[1..1] by 1, nums = [2,1,2].
- Increment nums[2..2] by 1, nums = [2,1,3].
- Increment nums[2..2] by 1, nums = [2,1,4].
Constraints:
1 <= nums.length == target.length <= 105
1 <= nums[i], target[i] <= 108
solution:
//our main goal is to find no of operation need to be performed so we use diff and comparing diff it is greater we need to add if it is smaller we need to sutract
class Solution {
public long minimumOperations(int[] nums, int[] target) {
long inc = 0,dec =0,opr =0;
for(var i=0;i<nums.length;i++){
var diff = target[i]-nums[i]
if(diff >0){
if(inc< diff){
opr += diff-inc;
}inc = diff;
dec =0;
}else if(diff <0)
if(dec > diff){
opr+=dec -diff;
}
dec = diff;
inc = 0;
}
else{
inc = dec = 0;
}}}