ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

第52天(中等题 数据结构)

第52天(中等题 数据结构)

打卡第五十二天
2道中等题
image

题目:
image

思路:前缀和+哈希表
image

代码:

int findMaxLength(vector<int>& nums) {unordered_map<int, int> pos = {{0, -1}};  // 初始前缀和为0,索引为-1(从0开始计算子数组)int ans = 0, s = 0;  for (int i = 0; i < nums.size(); i++) {s += nums[i] ? 1 : -1;  // 0 变成 -1,1 变成 +1if (pos.contains(s)) {   // 如果之前出现过这个前缀和ans = max(ans, i - pos[s]);  // 当前索引减去第一次出现的索引,得到子数组长度} else {pos[s] = i;  // 第一次出现这个前缀和的位置}}return ans;
}

耗时≈一小时 明天继续

返回列表