当前位置: 首页 > news >正文

做网站的基础开发网站的流程

做网站的基础,开发网站的流程,网站做下CDN防护,上海营销咨询公司3234. 统计 1 显著的字符串的数量 题目描述 给你一个二进制字符串 s。 请你统计并返回其中 1 显著 的子字符串的数量。 如果字符串中 1 的数量 大于或等于 0 的数量的 平方,则认为该字符串是一个 1 显著 的字符串 。 思路 一个很显然的思路是,我们…

3234. 统计 1 显著的字符串的数量

题目描述

给你一个二进制字符串 s

请你统计并返回其中 1 显著 的子字符串的数量。

如果字符串中 1 的数量 大于或等于 0 的数量的 平方,则认为该字符串是一个 1 显著 的字符串 。

思路

一个很显然的思路是,我们要枚举起点 l l l,找到所有满足条件的 r r r,如果暴力枚举,时间复杂度是 O ( n 2 ) O(n^2) O(n2),但是我们在枚举r的过程中,如果目前统计的0的数量的平方已经超过所有1的数量,那后面的r肯定是不满足条件的,就不需要考虑,所以复杂度应该是 O ( n s q r t ( n ) ) O(nsqrt(n)) O(nsqrt(n))

写起来极其麻烦

class Solution {
public:int numberOfSubstrings(string s) {int n = s.size();s = ' ' + s;vector<int>pre0(n + 2), pre1(n + 2);vector<int>pos;for(int i = 1; i <= n; ++i){pre0[i] = pre0[i - 1] + (s[i] == '0' ? 1 : 0);pre1[i] = pre1[i - 1] + (s[i] == '1' ? 1 : 0);if(s[i] == '0')pos.push_back(i);}pre0[n + 1] = pre0[n];pre1[n + 1] = pre1[n];pos.push_back(n + 1);int ans = 0;for(int i = 1; i <= n; ++i){//枚举起点int id = lower_bound(pos.begin(), pos.end(), i + 1) - pos.begin();//找到下一个0的位置int pre_id = i - 1;int num0 = s[i] == '0';for(int j = id; j < pos.size(); ++j){int k = pos[j];if(num0 == 0){ans += max(0, pre1[k] - pre1[pre_id]);}else{ans +=  min(k - pre_id,  max(0, pre1[k] - pre1[i - 1] - num0 * num0 + 1));} ++num0;if(num0 * num0 > pre1[n])break;pre_id = k;}}return ans;}
};
http://www.15wanjia.com/news/19290.html

相关文章:

  • 免费宣传单设计模板搜索引擎优化的含义和目标
  • 本地做网站绑定域名一级域名好还是二级域名好
  • 专业写作网站网站排名提升软件
  • 医院网站建设要求桂平网络推广
  • 深圳做微信商城网站建设吉林seo技术交流
  • 西宁高端网站开发公司互联网营销师考试内容
  • 门户网站建设 突出服务产品推销
  • 做外贸的人如何上国外网站网站营销方案模板
  • 做一个棋牌网站要多少钱网络广告策划与制作
  • 公司新成立想要搭建网站怎么做关键词林俊杰
  • 网站做很多关键词沈阳网站建设
  • 大疆网站建设凡科网小程序
  • 在线网站制作微信公众号怎么开通
  • 做的物流网站有哪些焊工培训内容有哪些
  • 网站登录注册页面模板网上销售
  • 临朐网站建设网络营销的概念和特点
  • 奉化网站建设深圳seo公司排名
  • 糗事百科网站模板app拉新推广平台
  • 建设网站服务器自营方式的特点seo运营学校
  • python做网站性能怎么样seo需要掌握什么技能
  • 湖南人文科技学院2021分数线seo属于什么职位类型
  • 内乡网站制作免费网站外链推广
  • java做网站的职业成都排名推广
  • 做网站的网址微信群发软件
  • 宝应县天宇建设网站seo高级教程
  • 党支部网站建设友妙招链接
  • 老域名新网站推广腾讯域名注册官网
  • 哪一些网站可以开户做百度广告销售管理
  • 网站建设的图片百度无锡营销中心
  • 外国网站加速器免费的网络营销方式