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

太原手机网站建设wordpress图片转内

太原手机网站建设,wordpress图片转内,长春网站制作公司哪个好,长沙建设工程造价网优选算法第四讲&#xff1a;前缀和模块 1.[模板]前缀和2.【模板】二维前缀和3.寻找数组的中心下标4.除自身以外数组的乘积5.和为k的子数组6.和可被k整除的子数组7.连续数组8.矩阵区域和 1.[模板]前缀和 链接: link #include <iostream> #include <vector> using…

优选算法第四讲:前缀和模块

  • 1.[模板]前缀和
  • 2.【模板】二维前缀和
  • 3.寻找数组的中心下标
  • 4.除自身以外数组的乘积
  • 5.和为k的子数组
  • 6.和可被k整除的子数组
  • 7.连续数组
  • 8.矩阵区域和

1.[模板]前缀和

链接: link
在这里插入图片描述

#include <iostream>
#include <vector>
using namespace std;int main() {int n = 0, q = 0;cin >> n >> q;vector<int> arr(n+1);//开辟一个n+1的数组for(int i = 1; i <= n; i++) cin >> arr[i];//创建一个前缀和数组。vector的构造会自己初始化vector<long long> dp(n+1);//更新前缀和数组for(int i = 1; i<=n; i++) dp[i] = dp[i-1] + arr[i];//直接使用前缀和数组进行返回即可int l = 0, r = 0;while(q--){cin >> l >> r;cout << dp[r] - dp[l-1] << endl;//直接输出结果即可}return 0;
}

2.【模板】二维前缀和

链接: link
在这里插入图片描述

3.寻找数组的中心下标

链接: link
在这里插入图片描述

class Solution {
public:int pivotIndex(vector<int>& nums) {int n = nums.size();vector<int> f(n), g(n);//1.分别求出前缀和、后缀和数组for(int i = 1; i<n; i++)f[i] = f[i-1] + nums[i-1];for(int i = n-2; i>=0; i--)g[i] = g[i+1] + nums[i+1];//2.使用前缀和、后缀和数组for(int i = 0; i<n; i++)if(f[i] == g[i]) return i;return -1;}
};

4.除自身以外数组的乘积

链接: link
在这里插入图片描述

class Solution {
public:vector<int> productExceptSelf(vector<int>& nums) {int n = nums.size();vector<int> f(n), g(n);//1.先求出f和g数组f[0] = 1;//注意:细节问题一定要处理g[n-1] = 1;for(int i = 1; i<n; i++)f[i] = f[i-1] * nums[i-1];for(int i = n-2; i>=0; i--)g[i] = g[i+1] * nums[i+1];//2.使用两数组vector<int> ret(n);for(int i = 0; i<n; i++)ret[i] = f[i] * g[i];return ret;}
};

5.和为k的子数组

链接: link
在这里插入图片描述

class Solution {
public:int subarraySum(vector<int>& nums, int k) {unordered_map<int, int> hash;hash[0] = 1;int sum = 0, ret = 0;for(auto e : nums){sum += e;//计算当前位置的前缀和if(hash.count(sum - k)) ret += hash[sum-k];hash[sum]++;}return ret;}
};

6.和可被k整除的子数组

链接: link
在这里插入图片描述

class Solution {
public:int subarraysDivByK(vector<int>& nums, int k) {unordered_map<int, int> hash;hash[0] = 1;//细节问题:如果nums的和可被k整除,那么也要将次数+1int sum = 0, ret = 0;for(auto e : nums){sum += e;int r = (sum%k + k) % k;//求余数的方法if(hash.count(r)) ret += hash[r];//如果sum%k = 前缀和%k,那么就可以被k整除hash[r]++;}return ret;}
};

7.连续数组

链接: link
在这里插入图片描述

class Solution {
public:int findMaxLength(vector<int>& nums) {unordered_map<int, int> hash;hash[0] = -1;int sum = 0, ret = 0;for(int i = 0; i<nums.size(); i++){sum += nums[i] == 0 ? -1 : 1;//我们不需要将数组的0改为1,只需要在加的这个部分加-1就行了if(hash.count(sum)) ret = max(ret, i-hash[sum]);else hash[sum] = i;//此时存储的应该是下标}return ret;}
};

8.矩阵区域和

链接: link
在这里插入图片描述

class Solution {
public:vector<vector<int>> matrixBlockSum(vector<vector<int>>& mat, int k) {int m = 0, n = 0;m = mat.size();n = mat[0].size();//先计算出前缀和数组vector<vector<int>> dp(m+1, vector<int>(n+1));for(int i = 1; i<=m; i++)for(int j = 1; j<=n; j++)dp[i][j] = dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+mat[i-1][j-1];//前缀和数组的使用vector<vector<int>> ret(m, vector<int>(n));for(int i = 0; i<m; i++){for(int j = 0; j<n; j++){int x1 = 0, y1 = 0, x2 = 0, y2 = 0;x1 = max(0, i-k) + 1;y1 = max(0, j-k) + 1;x2 = min(m-1, i+k) + 1;y2 = min(n-1, j+k) + 1;ret[i][j] = dp[x2][y2] - dp[x1-1][y2] - dp[x2][y1-1] + dp[x1-1][y1-1];}}return ret;}
};
http://www.yayakq.cn/news/772865/

相关文章:

  • 做网站运营需要学什么软件恩平市网站建设
  • 宁波网站建设价格美工网站设计收费
  • 不干胶网站做最好的什么是网络营销?请写出其定义
  • 鳌江网站建设网站主页设计收费
  • 网站建设的发展历程用wordpress做论坛好吗
  • 免费网站建设空间全屋整装十大公认品牌有哪些
  • 导购网站建设需求模版网上书城网站开发背景
  • 网站系统灵活性百度业务员联系电话
  • 网站程序更换安徽做网站公司哪家好一点
  • 黔西网站建设wordpress5.1.1版本汉化
  • 重庆网站建设技术托管wordpress带个人充值中心
  • 做相关性分析的网站江苏城乡与住房建设部网站
  • 自贡网站建设网站建设百度推广
  • 网站排名规则工信部网站备案网址
  • 网站建设又叫什么软件wordpress图片链接大图
  • 网站的种类wordpress减肥网站采集规则
  • 亚马逊网站首页安徽省建设厅官方网站各处室
  • 旅游网站模板下载设计素材网站p开头的
  • 区块链媒体网站建设crm软件是干嘛的
  • 一个商务宣传怎么做网站合适教育 wordpress模板
  • DW做的网站都能打开吗数码网站名
  • 深圳网站建设599元全包前端性能优化有哪些方法
  • 网站建设与管理读后感苏州产品网站建设
  • 灯罩技术支持东莞网站建设seo排名优化表格工具
  • 站内推广的几种方式全新正版营销网站
  • 南昌网站开发培训中心中国网站排名 优帮云
  • 关于企业网站建设数据现状分析wordpress上传之后
  • 自学做蛋糕的网站轮网站开发的重要性
  • 网站建设方案书doc模板呼伦贝尔网站建设平台
  • 商场网站开发网站建设套餐报价方案