我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

golang刷leetcode技巧之如何实现数字流的秩

小编给大家分享一下golang刷leetcode技巧之如何实现数字流的秩,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联主要从事成都网站建设、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务南芬,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

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

实现 track(int x) 方法,每读入一个数字都会调用该方法;

实现 getRankOfNumber(int x) 方法,返回小于或等于 x 的值的个数。

注意:本题相对原题稍作改动

示例:

输入:

["StreamRank", "getRankOfNumber", "track", "getRankOfNumber"]

[[], [1], [0], [0]]

输出:

[null,0,null,1]

提示:

x <= 50000

track 和 getRankOfNumber 方法的调用次数均不超过 2000 次

解题思路

1,这是二分查找的拓展

2,包含二分查找和二分插入

3,与二分查找的区别是,找到mid位置后,如果mid位置的值<=target ,需要后移mid

代码实现

type StreamRank struct {  data []int}

func Constructor() StreamRank {   return StreamRank{}}func (this *StreamRank) getMid(x int)int{   i:=0   j:=len(this.data)-1   mid:=(i+j)/2   for i+1       if this.data[mid]==x{           break       }       if this.data[mid]          i=mid+1       }else{           j=mid-1       }       mid=(i+j)/2   }   for mid       mid++   }   return mid}
func (this *StreamRank) Track(x int)  {   if len(this.data)==0{       this.data=append(this.data,x)       return   }   mid:=this.getMid(x)             d:=this.data[mid:]       this.data=append(this.data[:mid:mid],x)       this.data=append(this.data,d...)       return}

func (this *StreamRank) GetRankOfNumber(x int) int {    if len(this.data)==0{        return 0    }   mid:=this.getMid(x)   return mid
}

/** * Your StreamRank object will be instantiated and called as such: * obj := Constructor(); * obj.Track(x); * param_2 := obj.GetRankOfNumber(x); *

以上是“golang刷leetcode技巧之如何实现数字流的秩”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享题目:golang刷leetcode技巧之如何实现数字流的秩
本文地址:http://shouzuofang.com/article/pccdgs.html

免费获取网站建设与品牌策划方案报价

*主要业务范围包括:高端网站建设, 集团网站建设(网站建设网站制作)找网站建设公司就上四川攀枝花网站建设。
提交需求

    联系我们

    028-86922220
  • 手机:13518219792
  • 地址:成都市太升南路288号锦天国际A幢1002号
  • 24小时服务热线:400-028-6601

    网站建设服务

  • 网页设计
  • 网站制作
  • 网站开发

    网站推广服务

  • 营销网站建设
  • 百度快速排名
  • 整站网站推广

    网站运维服务

  • 基础维护
  • 网站改版
  • 网站维护

    FOLLOW US

  • 微信二维码

    微信二维码

Copyright © 2022 四川攀枝花网站建设公司 四川攀枝花网站建设公司-选我们!四川专业的攀枝花网站制作公司!
All Rights Reserved 版权所有 蜀ICP备2024105912号-3