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

欧美做暧网站安卓优化大师最新版

欧美做暧网站,安卓优化大师最新版,湖南好搜网站建设,做违法网站程序员犯法吗基础算法模板排序二分和前缀和二分求红色部分的右边界求绿色部分的左边界前缀和差分一维差分二维差分双指针算法模板思想DFS题目来自Acwing 网站,该专栏为博主在ACWing算法基础课上的学习记录和总结。 排序 基础算法模板题(一)—— 排序 二…

基础算法模板

  • 排序
  • 二分和前缀和
    • 二分
      • 求红色部分的右边界
      • 求绿色部分的左边界
    • 前缀和
    • 差分
      • 一维差分
      • 二维差分
  • 双指针算法
    • 模板
    • 思想
  • DFS

题目来自Acwing 网站,该专栏为博主在ACWing算法基础课上的学习记录和总结。

排序

基础算法模板题(一)—— 排序

二分和前缀和

二分

在这里插入图片描述

求红色部分的右边界

int l = 0, r = n-1;
while(l < r ){int mid = l + r + 1 >>1;if(check(红色性质是否满足)) l =mid;else r = mid -1;
}

这里mid之所以要加上1,是当区间长度为2时,分区一直没有变化,陷入递归死循环。
比如l = r - 1时, mid = (r - 1 + r)/2 = r - 1,如果此时刚好满足红色性质,那么mid会始终等于r - 1,分区一直没有变化,陷入递归死循环。
而加了1之后变成上取整 mid = r,就有机会break掉了。

求绿色部分的左边界


int l = 0, r = n-1;
while(l >  r){int mid  = l + r >> 1;if(check(绿色性质是否满足)) r = mid;else l = mid + 1;
}

前缀和

一维前缀和

S[i] = a[1] + a[2] + … a[i]
a[l] + … + a[r] = S[r] - S[l - 1] = S[r]-S[l]+a[l]

二维前缀和

S[i, j] = 第i行j列格子左上部分所有元素的和
以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为:
S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] + S[x1 - 1, y1 - 1]

基础算法模板题(二)—— 二分

差分

一维差分

给区间[l, r]中的每个数加上c:B[l] += c, B[r + 1] -= c

在这里插入图片描述
对于数组a[i] = b[1] + b[2 ]+ b[3] +…… + b[i]

则a数组是b数组的前缀和数组,b数组叫做a数组的差分数组。差分数组为:
b[0] = a[0 ]= 0;

b[1] = a[1] - a[0];

b[2] = a[2] - a[1];

b[3] =a [3] - a[2];

b[n] = a[n] - a[n-1];

有了差分数组b,通过前缀和运算,就可以在O(n) 的时间内得到a数组。给定数组a,对a数组[l,r]区间中的每一个数加上c,常规做法是循环l到r加上c。执行m次操作,时间复杂度就为O(n*m)。

对于这个问题,就可以使用差分数组了:
给a数组中的[ l, r]区间中的每一个数都加上c,只需对差分数组b做 b[l] + = c, b[r+1] - = c。时间复杂度为O(1)。

二维差分

给以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵中的所有元素加上c:
S[x1, y1] += c, S[x2 + 1, y1] -= c, S[x1, y2 + 1] -= c, S[x2 + 1, y2 + 1] += c

基础算法模板(三)—— 差分和前缀和

双指针算法

双指针常见由以下两种:第一种是在两个不同序列中扫描,比如归并排序的合并两个有序序列为一个序列。 第二种是在同一个序列中一前一后扫描,比如快速排序的partition函数。
在这里插入图片描述

模板

for(int i = 0, j =0; i < n; i++){while(j <= n&& check(j,i) )j++;题目逻辑处理代码;
}

思想

在这里插入图片描述

使用双指针算法可以将常规的双重循环O(n^2)复杂度,根据题目给的某种性质(通常是单调性)使得两个指针由于一定的制约关系都只用遍历一遍整个区间,从而达到将O(n ^2)种状态优化为O(n)种组合状态。所以虽然是双重for循环,但是扫描的次数不超过O(2n),从而将复杂度优化为O(n)。

例如,每个单词以空格隔开,要求每一行输出一个单词。输入:abc def ghijkl mn,输出:
abc
def
ghijkl
mn

import java.util.Scanner;
class Main{public static void main(String args[]){Scanner reader = new Scanner(System.in);String s = reader.nextLine();int n = s.length();for(int i = 0; i < n; i++){//j指针寻找单词的最后一个字符int j = i;while( j < n && s.charAt(j) != ' ') j ++;//[i,j)为一个单词for(int k = i; k < j; k ++) System.out.print(s.charAt(k));System.out.println();i = j; //i指向j}}
}

基础算法模板题(四)——双指针

位运算

得到x的二进制表示的第k位: x>> k & 1
lowbit(x) 返回x二进制表示的最后一位1:x & -x

在这里插入图片描述

DFS

DFS算法就像一个执着的人,一条路走到 黑,走不通才会退到上一个路口走另一条。dfs通常不需要构建栈结构,利用函数递归调用即可实现。递归函数的调用本身就构建好了栈。我们所需要的是保存每一条路径上的状态。在这一过程中经常需要用到 剪枝回溯策略。
同时DFS也不具有最短性质。该算法本质是暴力 枚举完所有可能状态(方案),找到合适的解。空间复杂度是O(树的高度)
在这里插入图片描述

基础算法模板题(五)—— DFS

http://www.lbrq.cn/news/2683909.html

相关文章:

  • 建设网站最新动态域名官网
  • 建设一个打鱼游戏网站我在百度下的订单如何查询
  • 免费制作微网站进入百度一下官网
  • 有没有专门做二手车网站谷歌搜索引擎镜像
  • 企业网站建设的策略网络营销软件代理
  • 怎么快速推广业务seo优化运营专员
  • 网站制作的软件有哪些舆情报告范文
  • 专做动漫av的网站百度网盘客服
  • eclipse与jsp网站开发怎么寻找网站关键词并优化
  • 上海门户网站建设方案推广app赚钱的平台
  • 白色网站源码福州网站建设方案外包
  • 深圳平湖网站开发百度搜索推广方法
  • 建成区违法建设治理网站广告竞价排名
  • 黄岩区住房保障建设局网站武汉百度推广多少钱
  • 百度做网站的公司个人网站注册平台
  • 网站正在建设中模板免费下载网站制作策划
  • 企业网站的建立如何带来询盘外贸怎么找客户资源
  • 做日本民宿的网站抖音账号权重查询
  • 免费建立网站教程如何网络媒体推广
  • 哪些网站容易收录seo是什么姓氏
  • 织梦做的网站被黑了seo排名优化方式方法
  • 网站返回首页怎么做的好看今日新闻热点10条
  • 政府网站设计方案企业网站模板源码
  • 海南海口网站建设网络广告营销的案例
  • 郑州做网站软件百家号查询排名数据查询
  • 临朐县网站建设阿里云域名注册查询
  • 网站建设合伙合同今日足球赛事推荐
  • 网站建设51cto微信公众号的推广
  • 校园网站建设与应用星链友店
  • 西青网站建设百度问答平台入口
  • GESP2023年9月认证C++一级( 第三部分编程题(1)买文具)
  • Nestjs框架: RBAC基于角色的权限控制模型初探
  • HyperMesh许可使用监控
  • 本地进行语音文字互转
  • Docker大全
  • 香橙派 RK3588 部署千问大模型 Qwen2-VL-2B 推理视频