Minimum Operations to Make a Subsequence LeetCode solution in C++
1class Solution {2public:3vector<int> ans;45void bin(int lo, int hi, int num) {6if (lo == hi) {7ans[lo] = num;8return;9}10int mid = (lo + hi) / 2;11if (ans[mid] < num)12bin(mid + 1, hi, num);13else14bin(lo, mid, num);15}1617int minOperations(vector<int> &target, vector<int> &arr) {18unordered_map<int, int> idx;19for (int i = 0; i < target.size(); i++) {20idx[target[i]] = i;21}2223for (int i = 0; i < arr.size(); i++) {24if (idx.find(arr[i]) == idx.end()) continue;25int num = idx[arr[i]];26if (ans.size() == 0 || num > ans.back()) {27ans.push_back(num);28} else {29bin(0, ans.size() - 1, num);30}31}3233return (target.size() - ans.size());34}35};