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

做社交网站 投入关键词林俊杰mp3

做社交网站 投入,关键词林俊杰mp3,wordpress设置导航条,长沙网站建设规划文章目录 面试题 10.10. 数字流的秩327. 区间和的个数315. 计算右侧小于当前元素的个数 树状数组可以理解一种数的存储格式。 面试题 10.10. 数字流的秩 假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。 请实现数据结构…

文章目录

      • 面试题 10.10. 数字流的秩
      • 327. 区间和的个数
      • 315. 计算右侧小于当前元素的个数

树状数组可以理解一种数的存储格式。
在这里插入图片描述

面试题 10.10. 数字流的秩

假设你正在读取一串整数。每隔一段时间,你希望能找出数字 x 的秩(小于或等于 x 的值的个数)。
请实现数据结构和算法来支持这些操作,也就是说:
实现 track(int x) 方法,每读入一个数字都会调用该方法;
实现 getRankOfNumber(int x) 方法,返回小于或等于 x 的值的个数。

面试题 10.10. 数字流的秩

class StreamRank {vector<int> v;int lowbit(int x) {return x & -x;}
public:StreamRank(): v(50002, 0) {}void track(int x) {++x; //x + 1是因为树状数组处理的元素下标从1开始while (x <= 50001) {v[x]++;x += lowbit(x);}}int getRankOfNumber(int x) {++x;int ans = 0;while (x) {ans += v[x];x -= lowbit(x);}return ans;}
};
class StreamRank:def __init__(self):self.l = [0]*50002def lowBit(self, x):return x & (-x)def track(self, x: int) -> None:x += 1while x <= 50001:self.l[x] += 1x += self.lowBit(x)def getRankOfNumber(self, x: int) -> int:x += 1ans = 0while x:ans += self.l[x]x -= self.lowBit(x)return ans

327. 区间和的个数

给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中,值位于范围 [lower, upper] (包含 lower 和 upper)之内的 区间和的个数 。
区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。

327. 区间和的个数
区间过大,hash,然后到树状数组。

class Solution:def countRangeSum(self, nums, lower: int, upper: int) -> int:n = len(nums)prefixs = [0]*nt = 0ans = 0for i in range(n):t += nums[i]prefixs[i] = tif lower<= t<= upper:ans += 1s = set()for i in range(n):s.add(prefixs[i])s.add(prefixs[i]-lower)s.add(prefixs[i] - upper)l = sorted(s)d = {x: i+1 for i, x in enumerate(l)}  # hash到固定长度trie = [0]*(len(d)+1)  # 树状数组for i in range(n):left, right = d[prefixs[i]-upper], d[prefixs[i]-lower]ans += self.query(trie, right) - self.query(trie, left-1)self.insert(trie, d[prefixs[i]])return ansdef query(self, trie, x):ans = 0while x:ans += trie[x]x -= x & (-x)return ansdef insert(self, trie, x):while x < len(trie):trie[x] += 1x += x & (-x)

315. 计算右侧小于当前元素的个数

给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。

315. 计算右侧小于当前元素的个数

class Solution:def countSmaller(self, nums: List[int]) -> List[int]:n = len(nums)l = [0]*20002 # -10000~10000 -> 2~20002 因为求小于x的值,x=2,count输入x=1ans = [0]*nfor i in range(n-1,-1,-1):x = nums[i] + 10002ans[i] = self.count(l, x-1)self.insert(l, x)return ansdef count(self, l, x):ans = 0while x:ans += l[x]x -= self.lowBit(x)return ansdef lowBit(self, x):return x & (-x)def insert(self, l, x):while x < len(l):l[x] += 1x += self.lowBit(x)

算法学习笔记(2) : 树状数组

http://www.15wanjia.com/news/26414.html

相关文章:

  • 苏州专业网站建设开发开源seo软件
  • 加强网站安全建设如何做好企业推广
  • 域名的申请流程王通seo赚钱培训
  • 网站建设海报设计网站统计分析工具的主要功能
  • react可以做门户网站么推广优化方案
  • 有没有专门教做扯面的网站重庆seo整站优化报价
  • 自助做app的网站短视频代运营方案策划书
  • 专门做特价的网站网站分析报告
  • 做网站时怎样分割百度公司官网招聘
  • 建e网全屋设计效果图百度手机端排名如何优化
  • 免费企业网络推广网站本地推广平台
  • 专业企业网站搭建服务搜索引擎优化解释
  • 站酷官网入口百度竞价排名软件
  • 如何找专业的网站建设公司企业网络营销案例
  • 注册域名 不建网站每日新闻摘抄10一15字
  • 网站开发公司联系电话网络营销创意案例
  • 台州建设银行官方网站关键词排名优化公司成都
  • 如何做网站的薪酬调查广告点击一次多少钱
  • 网站制作呼和浩特网络推广软文范文
  • 小企业网站建设是怎么做的google seo教程
  • 网站建设方案推销百度下载并安装到桌面
  • 网站建设思路设计市场营销产品推广策划方案
  • 东莞网站建设制作公司排名小说网站排名人气
  • wordpress 链接 样式表百度关键词优化软件网站
  • 青岛有没有专门做淘宝网站登录百度app
  • 个人做网站法律风险网络推广的方法你知道几个?
  • 长沙做网站要微联讯点很好百度网址大全电脑版
  • 网站在线设计seo哪里有培训
  • 网站开发素材包天津做网站的网络公司
  • 酒店网站建设策划书长春百度推广排名优化