Skip to content

Commit 01a4f23

Browse files
authored
Update 1713-minimum-operations-to-make-a-subsequence.js
1 parent 90b4a71 commit 01a4f23

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

1713-minimum-operations-to-make-a-subsequence.js

+38
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,41 @@ const minOperations = function(target, arr) {
7575

7676
return target.length - stack.length
7777
};
78+
79+
// another
80+
81+
/**
82+
* @param {number[]} target
83+
* @param {number[]} arr
84+
* @return {number}
85+
*/
86+
const minOperations = function(target, arr) {
87+
const hash = {}
88+
for(let i = 0, n = target.length; i < n; i++) {
89+
hash[target[i]] = i
90+
}
91+
const stack = []
92+
93+
for(let e of arr) {
94+
if(hash[e] == null) continue
95+
const cur = hash[e]
96+
if(stack.length && cur > stack[stack.length - 1]) {
97+
stack.push(cur)
98+
continue
99+
}
100+
101+
let l = 0, r = stack.length - 1
102+
103+
while(l < r) {
104+
const mid = ~~((l + r) / 2)
105+
if(stack[mid] < cur) {
106+
l = mid + 1
107+
} else r = mid
108+
}
109+
110+
stack[l] = cur
111+
112+
}
113+
114+
return target.length - stack.length
115+
};

0 commit comments

Comments
 (0)