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

旅游网站排行榜前十名官网百度竞价网站建设

旅游网站排行榜前十名官网,百度竞价网站建设,上线了 网站,杭州seo关键字优化题目 给你一个整数 n 和一个在范围 [0, n - 1] 以内的整数 p #xff0c;它们表示一个长度为 n 且下标从 0 开始的数组 arr #xff0c;数组中除了下标为 p 处是 1 以外#xff0c;其他所有数都是 0 。 同时给你一个整数数组 banned #xff0c;它包含数组中的一些位置。b…题目 给你一个整数 n 和一个在范围 [0, n - 1] 以内的整数 p 它们表示一个长度为 n 且下标从 0 开始的数组 arr 数组中除了下标为 p 处是 1 以外其他所有数都是 0 。 同时给你一个整数数组 banned 它包含数组中的一些位置。banned 中第 i 个位置表示 arr[banned[i]] 0 题目保证 banned[i] ! p 。 你可以对 arr 进行 若干次 操作。一次操作中你选择大小为 k 的一个 子数组 并将它 翻转 。在任何一次翻转操作后你都需要确保 arr 中唯一的 1 不会到达任何 banned 中的位置。换句话说arr[banned[i]] 始终 保持 0 。 请你返回一个数组 ans 对于 [0, n - 1] 之间的任意下标 i ans[i] 是将 1 放到位置 i 处的 最少 翻转操作次数如果无法放到位置 i 处此数为 -1 。 子数组 指的是一个数组里一段连续 非空 的元素序列。 对于所有的 i ans[i] 相互之间独立计算。 将一个数组中的元素 翻转 指的是将数组中的值变成 相反顺序 。 1 n 105 0 p n - 1 0 banned.length n - 1 0 banned[i] n - 1 1 k n  banned[i] ! p banned 中的值 互不相同 用例分析 不考虑banned。假定1在i出翻转[i,ik)则1到了ik-1处。翻转[j,jk-1],翻转之前i距离子数组的开始i-j那么翻转后1的距离子数组的结束i-j即jk-1-(i-j) k2*j-i-1k-i-12*j j的取值范围为[i-k1,i],同时[0,n-k] n5,k4 n5,k4 10000 00010 k-i-13新位置为303 01000 00100 00001 k-i-12新位置为202 224 00100 01000 00010 k-i-11新位置为101 123 00010 10000 00100 k-i-10新位置为000 022 00001 01000 k-i-1-1新位置为  -121 注意 p已经处理。 核心代码 class Solution { public:   vectorint minReverseOperations(int n, int p, vectorint banned, int k) {     vectorint vRet(n, -1);     vRet[p] 0;     queueint que;     que.emplace(p);     setint set0, set1;     for (int i 0; i n; i)     {       if (i 1)       {         set1.emplace(i);       }       else       {         set0.emplace(i);       }     }     for (const auto b : banned)     {       set0.erase(b);       set1.erase(b);     }     set0.erase(p);     set1.erase(p);     while (que.size())     {       const auto cur que.front();       que.pop();       const int j0 max(0, cur - k 1);       const int j1 min(cur, n - k);       const int next0 k - cur - 1 2 * j0;       const int next1 k - cur - 1 2 * j1;       auto setCur (next0 1) ? set1 : set0;       auto it0 setCur.lower_bound(next0);       auto it1 setCur.upper_bound(next1 1);       for (auto it it0; it ! it1; it)       {         vRet[*it] vRet[cur] 1;         que.emplace(*it);       }       setCur.erase(it0, it1);     }     return vRet;   } }; 时间复杂度 用广度优先实现入队n次。每次出队时间复杂度O(k)总时间复杂度O(kn)。出队的时间复杂度可以优化。每次出队是连续的奇数或偶数我们可以用两个std::set分别纪录未处理的奇数和偶数。未处理分两种情况已经处理被禁止。每次出队只需要查询两次时间复杂度O(logn)。故总时间复杂度为O(nlogn)。 并集查找 如果i是偶数vDo[i]记录需要处理的偶数中大于等于i且最小的数。奇数类似。以n等于8为例只分析偶数奇数类似。初始{0,2,4,6} {0,2,4,6} 处理0{2,2,4,6} 处理2{0,4,4,6} 处理4{0,2,6,6} 处理6{0,2,4,MAX} 2,2,4,6 处理0{2,4,4,6}处理2{2,4,4,6} 处理4{2,2,6,6}处理6{2,2,6MAX} {2,4,4,6} 处理0{4,4,6,6}处理2{2,4,6,6}处理4{2,4,6,6}处理6{2,4,4,MAX} … … 非常类似并集查找由于i一定小于vDo[i]所以不会有环。可以直接使用封装好的有向图的并集查找。 代码 class Solution { public:   vectorint minReverseOperations(int n, int p, vectorint banned, int k) {     vectorint vRet(n, -1);     vRet[p] 0;     queueint que;     que.emplace(p);     vectorint vNext(n);     for (int i 0; i n; i)     {       vNext[i] i;     }        const int iMax 1000 * 1000;     auto HasDo [](int b)     {       vNext[b] (b 2 n) ? vNext[b 2] : iMax;     };          banned.emplace_back(p);     for (const auto b : banned)     {       HasDo(b);     }     while (que.size())     {       const auto cur que.front();       que.pop();       const int j0 max(0, cur - k 1);       const int j1 min(cur, n - k);        int next0 k - cur - 1 2 * j0;       const int next1 k - cur - 1 2 * j1;              for (next0 GetNext(vNext, next0, iMax); next0 next1;)       {         vRet[next0] vRet[cur] 1;         HasDo(next0);         que.emplace(next0);         next0 GetNext(vNext, next0, iMax);       } }     return vRet;   }   int GetNext(vectorint vNext,const int b,const int iMax)   {     if ((iMax b) || (b vNext[b]))     {       return b;     };     return vNext[b] GetNext(vNext, vNext[b],iMax);   }; };   其它 视频课程 如果你觉得复杂想从简单的算法开始可以学习我的视频课程。https://edu.csdn.net/course/detail/38771 我的其它课程https://edu.csdn.net/lecturer/6176 测试环境 win7 VS2019 C17 相关下载 doc版文档**排版好**https://download.csdn.net/download/he_zhidan/88348653
http://www.zqtcl.cn/news/454072/

相关文章:

  • 做移动网站快速排名软件正能量网站网址大全
  • 网站横幅代码山东省住房和城乡建设厅电话号码
  • 营销模式有哪些seo点击软件哪个好用
  • 信息流网站建设做网站换服务器怎么整
  • html5网站编写wordpress同步到本地
  • php商城网站开发工业设计在线
  • 网站建设发布实训总结网站自适应代码
  • 网站建设与管理是什么摄影网站 蜂鸟
  • 廊坊做网站的大公司wordpress+主题加速
  • 做网站还能挣钱吗网页端
  • 自适应网站建设推荐淘宝详情页设计
  • 手机网站域名设置深圳的网站建设公司怎么样
  • 余姚网站建设设计服务cms网站源码
  • 工作是套模板做网站想做网站制作运营注册什么公司核实
  • 北京网站建设116networdpress导航栏下拉菜单
  • 医院网站建设的目标网络服务许可证
  • 市场部做网站工作职责晋江论坛网
  • 网站怎么吸引人网站优化策略分析
  • 河北建设厅网站衡水网站建设培训学校
  • 新网网站空间到期停了 咋续费网站营销推广应该怎么做
  • 网站建设和编辑实训报告安卓版网页制作软件
  • 网站模板框架站长资讯
  • 上海做网站哪家公司2022年国际国内重大新闻
  • 网站建设如何定位网站建设思路方向
  • 手机网站拦截怎么解除网站生成软件免费制作
  • 中国房地产网站茂名住房和城乡建设厅网站
  • 做网站销售工资怎么样网页设计是哪个专业
  • 吉林省住房城乡建设厅网站首页微商城模板包含哪些
  • 优秀个人网站案例wordpress 文章格式
  • 2019年做网站装修平面设计图的制作