跳到主要内容

481.神奇字符串

链接:481.神奇字符串
难度:Medium
标签:双指针、字符串
简介:给你一个整数 n ,返回在神奇字符串 s 的前 n 个数字中 1 的数目。

题解 1 - cpp

  • 编辑时间:2022-10-31
  • 执行用时:8ms
  • 内存消耗:8.5MB
  • 编程语言:cpp
  • 解法介绍:双指针记录。
class Solution {
public:
int magicalString(int n) {
vector<int> list(max(3, n));
list[0] = 1; list[1] = list[2] = 2;
int ans = 1, i1 = 2, i2 = 3, surplus = 2, curVal = 1, curMode = 1;
while (i2 < n) {
if (surplus == 0) {
surplus = list[++i1];
curVal += curMode;
curMode = -curMode;
}
list[i2++] = curVal;
surplus--;
if (curVal == 1) ans++;
}
return ans;
}
};