ll ans = 0, p = 1; if (!neg) { sort(v.begin(), v.end()); for (int i = 0; i < v.size(); i++) { if (v[i] != 0) { swap(v[i], v[0]); break; } } for (int i = v.size() - 1; i >= 0; i--) { ans += v[i] * p; p *= 10; } } else { sort(v.begin(), v.end(), greater<ll>()); for (int i = v.size() - 1; i >= 0; i--) { ans += v[i] * p; p *= 10; } ans = -ans; } return ans; } };
classSolution { public: intminimumTime(string s){ int n = s.size(); vector<int> suf(n + 1, 0); for (int i = n - 1; i >= 0; i--) { if (s[i] == '1') { suf[i] = min(suf[i + 1] + 2, n - i); } else suf[i] = suf[i + 1]; }
// 注意左半段为空的情况,ans := suf[0] int ans = suf[0]; int pre = 0; for (int i = 0; i < n; i++) { if (s[i] == '1') { pre = min(pre + 2, i + 1); ans = min(ans, pre + suf[i + 1]); } } return ans; } };