arrays - 数组 [1,2,3....n]。该系列中缺少一个数字。找出该数字的最佳方法是什么?
问题描述
会有一个从 1,2,3.... n 开始的数组。如果从数组中删除任何一个数字,那么找出删除数字的最佳方法是什么。
解决方案
以下只是找到丢失的一种可能的方法。
如果n
给定,则系列的总和1 + 2 + 3 + ... + n
是,
S = 1 + 2 + 3 + ... + n
= n * (n + 1) / 2
所以,最终,你知道S
. 现在总结你给出的所有整数。让我们称之为S'
。S
和S'
之间的区别(S - S')
就是答案。
即使给定的整数是随机顺序的,这也将起作用。这将不需要binary search
整数必须排序并且需要额外的nlogn
时间。
推荐阅读
- azure - 如何使用 REST api 调用为特定用户获取 Azure 分析服务服务器中数据模型的权限
- php - phpCAS::setDebug() 已被弃用,取而代之的是 phpCAS::setLogger()
- c++ - 使用推力::transform_reduce 转换数组(包含扫描不是答案)
- google-bigquery - BigQuery 外部表缓存结果缓存,如果我们添加新文件会自动失效吗?
- javascript - D3 style("Top") 没有将我的圈子设置在正确的 "y" 位置
- java - MappingMongoConverter 不可用于使用 @EnableMongoAuditing 进行单元测试的自动装配
- html - 格式化 Google Sheet Iframe 以删除水平滚动条
- python - 如何向输入搜索引擎添加容差
- c# - Razor,而不是 MVC:如何在按钮单击时调用页面模型方法来更新数据库
- reactjs - TypeError:无法读取反应错误中未定义的属性“拆分”