时间轴
时间轴
2025-11-13
init
贪心
题目:
最大操作次数,那么就从左边的 1 开始,把相邻的 1 看成 1 组,它们由一个或多个相邻的 0 分割,假设由 n 组 1,那么不难看出第 i 组 1 移动到最后一组 1 需要的操作次数为:第 i 组 1 的 1 的个数*(n-i)
123456789101112131415161718192021222324252627282930313233343536373839404142 | using std::string;using std::vector;class Solution { public: int maxOperations(string s) { int i, n = s.size(); int max_ops = 0; int last_1_pos; vector<int> vec; for (i = 0; i < n; i++) { if (s[i] == '1') { last_1_pos = i; break; } } while (i < n) { while (i < n && s[i] == '1') { i++; } vec.push_back(i - last_1_pos); while (i < n && s[i] == '0') { i++; } last_1_pos = i; } if (s.back() == '1' && !vec.empty()) { vec.pop_back(); } n = vec.size(); for (i = 0; i < n; i++) { max_ops += vec[i] * (n - i); } return max_ops; }}; |
