给出一个大小为n的数组a和整数t,定义区间[l,r](0<=l<r<=n-1),若存在下标i,j(l<=i<j<=r)属于区间[l,r],且a[i]异或a[j]=t,那么称[l,r]是非奇特区间,如不存在,则[l,r]是奇特区间,求a数组里的奇特区间个数。-笔试面试资料

这是qklbishe.com第19493 篇笔试面试资料
提供答案分析,通过本文《给出一个大小为n的数组a和整数t,定义区间[l,r](0<=l<r<=n-1),若存在下标i,j(l<=i<j<=r)属于区间[l,r],且a[i]异或a[j]=t,那么称[l,r]是非奇特区间,如不存在,则[l,r]是奇特区间,求a数组里的奇特区间个数。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

给出一个大小为n的数组a和整数t,定义区间[l,r](0<=l<r<=n-1),若存在下标i,j(l<=i<j<=r)属于区间[l,r],且a[i]异或a[j]=t,那么称[l,r]是非奇特区间,如不存在,则[l,r]是奇特区间,求a数组里的奇特区间个数。
给出一个大小为n的数组a和整数t,定义区间[l,r](0&lt;=l&lt;r&lt;=n-1),若存在下标i,j(l&lt;=i&lt;j&lt;=r)属于区间[l,r],且a[i]异或a[j]=t,那么称[l,r]是非奇特区间,如不存在,则[l,r]是奇特区间,求a数组里的奇特区间个数。 没有梦想何必远方
基本思路:滑动窗口

class Solution { public:     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      *       * @param a int整型vector       * @param t int整型       * @return long长整型      */     long long section(vector<int>& a, int t) {         // write code here         using ll = long long;         ll res = 0;         int n = (int)a.size();         unordered_map<int, int> cnt;         if (n < 2) return 0;         cnt[a[0]]++;         int l = 0, r = 1;         while (r < n)         {             int c = t^a[r];             while (cnt.count(c) > 0)             {                 res += max(0, r-l-1);                 if (--cnt[a[l]] == 0)                     cnt.erase(a[l]);                 l++;             }             cnt[a[r++]]++;         }         for (int i = l; i < n-1; ++i)         res += max(0, r-i-1);         return res;     } };

2021-12-24 20:13:25 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给出一个大小为n的数组a和整数t,定义区间[l,r](0<=l<r<=n-1),若存在下标i,j(l<=i<j<=r)属于区间[l,r],且a[i]异或a[j]=t,那么称[l,r]是非奇特区间,如不存在,则[l,r]是奇特区间,求a数组里的奇特区间个数。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情