范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

程序员面试之在有序数组中找到指定数的个数

  题目:在一个有序数组中找到一个指定数k的个数
  例如[1,1,2,2,2,3,4,4,4,4,5,6,7,8],给出2,返回3,因为2出现了3次
  出现频率:四星
  难度: 三星
  思路:由于是有序数组,自然会想到二分法查找,但实际上,这道题的难度大于二分查找,经常出现在笔试的最后一道,在已经掌握二分法查找的方法下(关于二分法查找可以查阅我的另一篇博文),比较容易想到的思路是先利用2分法找到指定数的索引位置n,然后从n+1开始顺序遍历下去计数等于k的个数,同时从n-1的位置向0索引位置遍历计数等于k的个数,两者相加就得到了答案。但是这个解题思路只能得50分,因为如果出现大量的重复k的这个数的数组,查找效率将急剧下降,例如:
  [1,1,2,2,2,2.........................2,2,2,3,4,5,6,6,7,7,7,8]
  在这个数组中查找2,的时间复杂度将大大超过log(N)
  正确的思路是,循环二分,在二分查找到指定数的情况下,在2头继续二分,直到高低位索引相遇,在循环2分过程中。不断替换找到的这个数的最大索引和最小索引, 记为minindex和maxindex,最后的结果就是maxindex-minindex+1.这个算法在指定结果数出现大量重复时的查找时间复杂度依然是log(N)
  当然,在紧张的面试中,留给这道题的时间只有15分钟左右,要想在15分钟时间把这道题写对没有那么容易,在这里交给大家一些技巧
  1.先假设2分法已经写好,最后来补全,避免代码量太大笔试时间不够
  2.利用递归,在实际做项目时,递归并不好,一来运行效率不高。二来容易死循环或者栈溢出,但是在笔试中确实一个利器,运用好递归事半功倍
  下面是GO语言代码:package main  package main  import "fmt"  //2分查找 func Find( n int, a [] int,  low int, high int) int {     mid :=0     for     {         if low > high{              return -1         }         mid=(low+high)/2;        //find        if(n==a[mid]){             return mid;        }else if(n>a[mid]){           low=mid+1;       }else{        high=mid-1;       }     }     return -1; }  var count = 0 var minindex = -1 var maxindex = -1  func Count( a [] int, k int, start int, end int ){     if start > end{         return     }     index := Find( k, a, start,end )         //调用2分查找     if index  == -1{         return 	 }         if index > maxindex{                 //循环替换找到的最大索引         maxindex = index     }     if index < minindex{                  //循环替换找到的最小索引         minindex = index     }     if index + 1 < len(a) && a[index + 1] == k{         Count( a,k, index+1, end )     }          if index - 1 >= 0 && a[index-1] == k{         Count( a, k, start, index-1 )     }    }  func main() {         var a = []int{1, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 8, 8}    k := 4    minindex = len(a) -1    Count(a,k,0,len(a)-1)    count = maxindex - minindex + 1   if count < 0{                //如果没有找到minindex会大于maxindex     count = 0              }    fmt.Println("结果是",count) }
  输出结果是5,时间复杂度是log(N)

华为Nova9信息现身,划重点支持5G大家知道华为目前最难的是缺少关键的元器件,特别是在5G流行的当下华为P50系列却无法支持5G,原因是5G关键的射频元器件国产无法实现。在此前提之下本来具备5G功能的华为P50系列,区块链如何实现去中心化?看货币三种形式就知道了在区块链技术的影响下,比特币展示了在中心化方面的不同表现,即三种数字货币的形式,其中,就有我们很熟悉的微信和支付宝支付。今天,我们来看看数字世界中的三种货币形式有哪些?1在线支付(轻舟智航宣布融资1亿美元云锋和元生资本领投美团龙珠跟投雷递网乐天8月16日报道继2021年年初完成A轮融资之后,轻舟智航日前又宣布完成由云锋基金和元生资本领投美团龙珠和国际知名养老基金共同投资的1亿美元A轮融资,老股东IDG资本持续跟挣了814亿美元的苹果,被判支付3亿专利使用费德克萨斯州陪审团在上周五裁定,在专利纠纷重审后,苹果公司必须支付3亿美元的专利使用费。据路透社报道,陪审团认定苹果应该向专利公司OptisWirelessTechnology及其相小林测评电视盒子哪个牌子好?泰捷新品WE60C升级版对比当贝H1经过这么些年的洗礼,市面上的电视盒子越来越多,竞争也愈发激烈。面对入门级的电视盒子,基本上大家都倾向于选择大品牌的口碑产品,至少不会踩坑。为了给大家评选出电视盒子哪个牌子好?数码小中兴Axon30Ultra发布会开始了中兴Axon30Ultra发布4698元起8256GB4698元12256GB4998元16GB1TB6666元搭载骁龙888处理器,LPDDR5UFS3。1161。53mm72。拒绝堆料,追求体验,理工男换机一圈,最后爱上了vivoX50Pro1。不买最便宜的,只卖降价最多的在去年618的时候我入手了跳水1000元的红米K30Pro乞丐版6加128G。当时的我对于小米还非常有好感,觉得它的MIUI系统强大美观,机子极具性手把手教你四步彻底删除右下角弹窗电脑中有的弹窗可以直接关闭,但有的弹窗却十分流氓,因为他根本没有关闭键,如上图所示一样,遇到这种情况,不禁让小伙伴们非常气愤。那我们应该如何处理这种现象呢?这类弹窗确实不会显示在任华硕TUFGamingA17FA706QM,军旅硬汉风格的入门级电竞笔记本电脑通常我们都会说电竞笔记本电脑电预算至少都是会拉高到万元以上,才能跑得动主流游戏不过目前电竞本市场太竞争,这款ASUSTUFGamingA17FA706QM,网上价格大概一万元人民币亚马逊封杀中国卖家电商排华的运动来了吗?1亚马逊封杀中国卖家电商排华的运动开始了吗?最近中国跨境电商们遭遇到了有史以来最大的一次封杀行动。亚马逊几乎一夜之间翻脸,对在平台上的中国卖家祭出了封杀大招5万多个商家的账号被封,我国半导体材料取得重大突破,这次不是弯道超车,而是造路超车美国正导演一场波谲云诡的商战大片,设计一出又一出围堵华为的阴谋诡计,伴随着白宫脱钩言论的出现,美方加大了施压动作,该国商务部宣布全面限制华为购买利用美国软件和技术生产的半导体。而面
马斯克收购推特,特朗普我不会回到推特帐号美国前总统特朗普战力未减,4月23日还曾到俄亥俄州为共和党助选。去年1月,推特(Twitter)等社交媒体宣布永远封锁时任美国总统特朗普帐号。今年4月,强调言论自由的全球首富特斯拉全球第二国内第一?零跑与特斯拉宁德时代上演CTC技术量产大战没必要往盒子里再装一个盒子。这是特斯拉CEO马斯克在2020年特斯拉电池日上,对CTC技术的首次公开解释,彼时他用飞机机翼装燃料的故事来描述CTC技术。两年之后,特斯拉计划今年年底无人驾驶商业化迎来立体战争对于自动驾驶领域的道路开拓,全世界的探索者都走得漫长而艰辛。尤其对当前走在自动驾驶世界发展前列的中国来说,从早期高等院校实验室研发,到宇通客车百度等企业实现道路测试从选择技术路径,特斯拉二手车价失控!13万公里Model3卖37万元,官方当起ampampquot黄牛ampampquot近期,新能源汽车受到原材料涨价供应链短缺等持续影响,很多车企出现了产能不足,且新车价格不断走高的情况。此前我们曾报道过,有特斯拉中国官方展示的二手车出现了价格倒挂的情况,即二手车价我们预计今年iPhone14将具备以下四个功能不再有迷你版本自从我们听说iPhonemini的销售让苹果公司失望以来,已经有一段时间了。现在,9to5Mac的消息人士最近证实,我们不会再看到这14系列的手机了。根据我们的消息来美国律所围剿中国跨境卖家,PayPal是沉默的帮凶中国制造是高品质产品的标签,还是仿冒商品的代名词?这个看似主观的问题,答案取决于不同国家知识产权法律的差异。发达的制造业与供应链加上知识产权观念的不同,中国卖家越界擦枪的情况时有发充当美国霸权的打手?美国科技巨头被俄罚款,中国华为的机会来了俄乌开战,美国一边加紧对乌克兰背后递刀,运送大批武器装备,一边协同其西方盟友对俄罗斯施以疯狂制裁,美企业也趁机对俄罗斯展开围攻。这次谷歌终于遭到俄罗斯的惩罚。据观察者网报道称,俄罗中国在哪些科技领域超越美国?来自国外问答网站quora的调查表明,中国在以下的科学技术领域达到世界先进水平,有的甚至超越了美国。1。人工智能(ArtificialIntelligence)人工智能,英文缩写为中国力量介入俄乌冲突?躺枪4月27日,大疆公司宣布将暂时中止在俄罗斯和乌克兰的所有商业活动,正在对全球业务进行合规风险复审。这已不是大疆第一次陷入消费级无人机被军用的漩涡里。自俄乌冲突爆发以来,大疆就饱受外黄益平邓峰沈艳汪浩超越强监管对平台经济治理政策的反思平台经济是一个新兴经济领域平台经济是指依托于云网端等网络基础设施并利用人工智能大数据分析区块链等数字技术工具,撮合交易传输内容管理流程的新经济模式。平台企业并不是新生事物,但数字技为何备受关注?全方位进化,是vivoX80Pro的成功秘诀当前国内手机市场中关注度极高的机型,必有vivoX80Pro一席之地。这款高端影像旗舰,也收获了不少用户的青睐和喜爱,吸引了越来越多消费者的目光。vivoX80系列看到vivoX8