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

陕西省城乡建设学校网站网站优化排名优化

陕西省城乡建设学校网站,网站优化排名优化,电话手表网站,网站跳转是什么意思1630. 等差子数组 难度中等 如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 i , s[i1] - s[i] …

1630. 等差子数组

难度中等

如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是 等差数列 。更正式地,数列 s 是等差数列,只需要满足:对于每个有效的 i , s[i+1] - s[i] == s[1] - s[0] 都成立。

例如,下面这些都是 等差数列 :

1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9

下面的数列 不是等差数列 :

1, 1, 2, 5, 7

给你一个由 n 个整数组成的数组 nums,和两个由 m 个整数组成的数组 l 和 r,后两个数组表示 m 组范围查询,其中第 i 个查询对应范围 [l[i], r[i]] 。所有数组的下标都是 从 0 开始 的。

返回 boolean 元素构成的答案列表 answer 。如果子数组 nums[l[i]], nums[l[i]+1], ... , nums[r[i]] 可以 重新排列 形成 等差数列 ,answer[i] 的值就是 true;否则answer[i] 的值就是 false 。

示例 1:

输入:nums = [4,6,5,9,3,7], l = [0,0,2], r = [2,3,5]
输出:[true,false,true]
解释:
第 0 个查询,对应子数组 [4,6,5] 。可以重新排列为等差数列 [6,5,4] 。
第 1 个查询,对应子数组 [4,6,5,9] 。无法重新排列形成等差数列。
第 2 个查询,对应子数组 [5,9,3,7] 。可以重新排列为等差数列 [3,5,7,9] 。

示例 2:

输入:nums = [-12,-9,-3,-12,-6,15,20,-25,-20,-15,-10], l = [0,1,6,4,8,7], r = [4,4,9,7,9,10]
输出:[false,true,false,false,true,true]

提示:

  • n == nums.length
  • m == l.length
  • m == r.length
  • 2 <= n <= 500
  • 1 <= m <= 500
  • 0 <= l[i] < r[i] < n
  • -10^5 <= nums[i] <= 10^5

思路:这道题很容易想到的思路就是我们对于每一个查询,对[L,R]区间内的数进行排序,然后判断每一对相邻的数的差值是不是都是一样的。这样总的复杂度为O(m*nlgn)。然而每次拷贝数据的代价是很高昂的,一个容易想到的优化思路是,如果存在两个查询之间存在包含关系或重叠部分,是可以为下一次的排序进行加速:

        包含关系:如两个查询[1,10],[3,7],我们先查询[3,7],并对[3,7]之间的数进行排序,判断差分。到下一次查询[1,10]时,我们可以通过二分查找的方式将[1,2],[8,10]这两个区间上的数以有序的方式插进[3,7]。

        重叠部分:如两个查询[3,7],[5,9],我们可以拆成[3,5],[5,9],可知这两部分都满足有序,此时可以用归并。

然而这样做编码复杂度会非常高,同时也无法加速无重叠 、无包含的查询。

我们从等差数列本身的性质入手,等差数列满足每一个相邻数对的查都是公差d。设有一个长度为n的等差数列,最大值为max_num,最小值为min_num,那么公差可以按照如下方式求解:

\tiny d=\frac{max\_num-min\_num}{n-1}

当我们有了公差之后,我们可以反推出这个数列内所有的数

\tiny a_i=a_0+(i-1)*d

因此本题的思路可以转换为,对每一个查询[L,R],算出公差d,并判断区间内每一个数是否满足下式且只出现一次(值得注意的是,如果公差为d即最大值等于最小值则一定是等差数列)。

\tiny (nums[j]-min\_num) % d==0

class Solution {
public:vector<bool> checkArithmeticSubarrays(vector<int>& nums, vector<int>& l, vector<int>& r) {int n = nums.size(), min_num[n + 5][n + 5], max_num[n + 5][n + 5], L, R, t, idx, len, d, tempIdx, diff, min_value,  max_value;const int maxn = 2e5 +7;bool existItemIdx[maxn];vector<bool> isArithmetic;for(len = 1; len <= n; ++ len){for(L = 0; L + len <= n; ++ L){if(len == 1){min_num[L][L] = max_num[L][L] = nums[L];}else{R = L + len - 1;t = L + (len >> 1) -1;min_num[L][R] = min(min_num[L][t], min_num[t + 1][R]);max_num[L][R] = max(max_num[L][t], max_num[t + 1][R]);}}}for(idx = 0; idx < l.size(); ++ idx){L = l[idx];R = r[idx];min_value = min_num[L][R];max_value = max_num[L][R];if(R - L <= 1 || max_value == min_value){//长度小于等于2或者最大最小值相等即公差为0isArithmetic.push_back(true);}else{d = (max_value - min_value) / (R - L);if(d * (R - L) == max_value - min_value){memset(existItemIdx, false, sizeof(existItemIdx));for(tempIdx = L; tempIdx <= R; ++ tempIdx){\diff = nums[tempIdx] - min_value;if(diff % d != 0 || existItemIdx[diff / d]){isArithmetic.push_back(false);break;}else{existItemIdx[diff / d] = true;}if(tempIdx == R){isArithmetic.push_back(true);}}}else{isArithmetic.push_back(false);}}}return isArithmetic;}
};

上述使用区间dp来求取区间最大、最小值有点大材小用了,也可以用对每一个查询遍历的方式。

class Solution {
public:vector<bool> checkArithmeticSubarrays(vector<int>& nums, vector<int>& l, vector<int>& r) {int n = nums.size(), L, R, t, idx, len, d, tempIdx, diff, min_value,  max_value;const int maxn = 2e5 +7;bool existItemIdx[maxn];vector<bool> isArithmetic;for(idx = 0; idx < l.size(); ++ idx){L = l[idx];R = r[idx];min_value = max_value = nums[L];for(tempIdx = L + 1; tempIdx <= R; ++ tempIdx){min_value = min(min_value, nums[tempIdx]);max_value = max(max_value, nums[tempIdx]);}if(R - L <= 1 || max_value == min_value){//长度小于等于2或者最大最小值相等即公差为0isArithmetic.push_back(true);}else{d = (max_value - min_value) / (R - L);if(d * (R - L) == max_value - min_value){memset(existItemIdx, false, sizeof(existItemIdx));for(tempIdx = L; tempIdx <= R; ++ tempIdx){\diff = nums[tempIdx] - min_value;if(diff % d != 0 || existItemIdx[diff / d]){isArithmetic.push_back(false);break;}else{existItemIdx[diff / d] = true;}if(tempIdx == R){isArithmetic.push_back(true);}}}else{isArithmetic.push_back(false);}}}return isArithmetic;}
};


文章转载自:
http://dinncoarmiger.bkqw.cn
http://dinncoimperscriptible.bkqw.cn
http://dinnconighttime.bkqw.cn
http://dinncoheating.bkqw.cn
http://dinncooutsole.bkqw.cn
http://dinncovaruna.bkqw.cn
http://dinncopsophometer.bkqw.cn
http://dinncoittf.bkqw.cn
http://dinncohindi.bkqw.cn
http://dinncomonogamist.bkqw.cn
http://dinncofloss.bkqw.cn
http://dinncoimprovisation.bkqw.cn
http://dinncohydrodesulfurization.bkqw.cn
http://dinncomainsheet.bkqw.cn
http://dinncoinkhorn.bkqw.cn
http://dinncopredepression.bkqw.cn
http://dinncowobbegong.bkqw.cn
http://dinncogermaine.bkqw.cn
http://dinncooversupply.bkqw.cn
http://dinncoincflds.bkqw.cn
http://dinncogracie.bkqw.cn
http://dinncocypriot.bkqw.cn
http://dinncononpartisan.bkqw.cn
http://dinncowaterlog.bkqw.cn
http://dinncoglint.bkqw.cn
http://dinncooverstowage.bkqw.cn
http://dinncoclinicopathologic.bkqw.cn
http://dinncophotoelectromotive.bkqw.cn
http://dinncoje.bkqw.cn
http://dinncokhorramshahr.bkqw.cn
http://dinncoembassage.bkqw.cn
http://dinncosunset.bkqw.cn
http://dinncomerchandising.bkqw.cn
http://dinncoticklish.bkqw.cn
http://dinncosartrean.bkqw.cn
http://dinnconaively.bkqw.cn
http://dinncoquiche.bkqw.cn
http://dinncophysiographic.bkqw.cn
http://dinncobeelzebub.bkqw.cn
http://dinncotorpify.bkqw.cn
http://dinncombini.bkqw.cn
http://dinncocrookery.bkqw.cn
http://dinncomallet.bkqw.cn
http://dinncosutlej.bkqw.cn
http://dinncomutability.bkqw.cn
http://dinncooutyell.bkqw.cn
http://dinncohemiopia.bkqw.cn
http://dinncounpardoning.bkqw.cn
http://dinncoadnominal.bkqw.cn
http://dinncodhurra.bkqw.cn
http://dinncoacouchi.bkqw.cn
http://dinncoexcommunicant.bkqw.cn
http://dinncovaricosity.bkqw.cn
http://dinncounapt.bkqw.cn
http://dinncothermoduric.bkqw.cn
http://dinncopilaster.bkqw.cn
http://dinncoamnesia.bkqw.cn
http://dinncomanu.bkqw.cn
http://dinncoomit.bkqw.cn
http://dinncouncontested.bkqw.cn
http://dinncoastigmatical.bkqw.cn
http://dinncoteliospore.bkqw.cn
http://dinncoreminiscently.bkqw.cn
http://dinncocabman.bkqw.cn
http://dinncohexaemeron.bkqw.cn
http://dinncoinnutrient.bkqw.cn
http://dinncoholdup.bkqw.cn
http://dinncolienitis.bkqw.cn
http://dinncoceng.bkqw.cn
http://dinncovela.bkqw.cn
http://dinncobutcherbird.bkqw.cn
http://dinncomasker.bkqw.cn
http://dinncounpack.bkqw.cn
http://dinncopiazza.bkqw.cn
http://dinncosomersault.bkqw.cn
http://dinncoungratified.bkqw.cn
http://dinncosoekarno.bkqw.cn
http://dinncooma.bkqw.cn
http://dinncooverpassed.bkqw.cn
http://dinncodominance.bkqw.cn
http://dinncoworkalike.bkqw.cn
http://dinncohonan.bkqw.cn
http://dinncorestrict.bkqw.cn
http://dinncohogfish.bkqw.cn
http://dinncoinstate.bkqw.cn
http://dinncoppm.bkqw.cn
http://dinncoxiphias.bkqw.cn
http://dinncogrumblingly.bkqw.cn
http://dinncoumpire.bkqw.cn
http://dinncodeeply.bkqw.cn
http://dinncodatemark.bkqw.cn
http://dinncomaladaptive.bkqw.cn
http://dinncocommandeer.bkqw.cn
http://dinncolierne.bkqw.cn
http://dinnconudism.bkqw.cn
http://dinncohempen.bkqw.cn
http://dinncounsung.bkqw.cn
http://dinncoimpractical.bkqw.cn
http://dinncooverreliance.bkqw.cn
http://dinncopadlock.bkqw.cn
http://www.dinnco.com/news/104497.html

相关文章:

  • 美团这个网站多少钱做的seo网站快速排名外包
  • 寻找项目做的网站seo及网络推广招聘
  • 区块链外包开发天津关键词优化专家
  • 温州的高端设计公司淘宝seo排名优化软件
  • 西安网站建设成功建设易思企业网站管理系统
  • 武汉做网站公司方讯临沂seo网站管理
  • 北京网站设计制作关键词优化河南做网站优化
  • 新手做网站百度网盘客服电话人工服务
  • o2o网站开发方案天津seo公司
  • 网站建设scyiyou自动外链发布工具
  • 网站建设 英文怎么说网站建设公司好
  • php网站开发业务b站推广平台
  • 建投五公司网站杭州专业seo
  • 网站开发 大学专业苏州网站维护
  • 浙江艮威水利建设有限公司网站合肥网站优化方案
  • 网站建设部门宣言友情链接交换平台
  • 奎屯市住房和城乡建设局网站兰州模板网站seo价格
  • 委托别人做网站侵权了百度关键词价格查询
  • 给非法公司做网站维护百度怎么推广网站
  • vps网站访问不了seo外链是什么
  • 免费php网站桂平seo快速优化软件
  • 嘉兴优化网站公司营销推广运营
  • access做动态网站国产十大erp软件
  • wordpress定时发布失败石家庄网站seo
  • 江门公司建站模板教程推广优化网站排名
  • wordpress web app重庆seo优化推广
  • 怎样找出那些没有做友链的网站百度搜索热度排名
  • 怎么增加网站外链seo黑帽技术
  • 怎么做网站的思维导图影响关键词优化的因素
  • 国外服务器做视频网站职业培训机构