难住了...一个从工作中抽象出来的算法题方差遍历指针最小值复杂度

最近有道题在厂内热度很高,这是一位来自10年的鹅厂程序员从工作中抽象出来的算法题,来考考大家:

题目是这样的:给定多个已经排序好的数组(从小到大),在每个数组中挑选一个数字,计算这些数字的方差。请找出方差最小的数字组合(可能有多个),并输出方差。举例:[1,3,4,6,7,100][28,50,70,102][14,76,98]

选择的数字组合应该是100,102,98。方差是2.67,要求性能尽可能的高,避免暴力穷举。

来看看鹅厂工程师们都怎么解这道题吧!

鹅厂工程师的看法

@jk-CDG基础平台负责人▼

PS:简单yy了一个思路,没有验证过,仅供参考方差最小的序列,就是需要所有数离平均值最小,同时,考虑到你这儿的序列都是有序了基本上,可以参考多个有序序列的合并排序思路一样

@bin·IEG

这个移动难度比较大,无法保证向较大的方向移动方差的函数的单调性

@aaron·WXG

如果每次只更新移动一个,且的移动的是ptr_sX值中最小的值的指针,似乎是个好方法?但是我无法证明这个一定能选到最好的?

似乎不对,这是反例:

[[252,638,754,848,887],[318,384,533],[31,81,105,123,203,213,217,298,536,562,603,605,624,651,850,855,918,921,950,951],[189,474],[175,348,416,419,525,743,807,986]]

@jk·CDG

这儿每次move不是当前指针的最小值,而是每个指针的下一个值的最小值,这样能保证移动后的平均值影响最小

这个case看起来是ok的

@zhenle-IEG开发工程师▼

假如:

1.数组的数量为M

2.数组里面的元素平均个数为N

3.数组里面所有元素的范围为H

两种方式:

第一种:

1.遍历第一个数组的每个元素,对于每个元素通过二分去剩下数组里面找到最接近的元素。

2.还需要对于每个数组进行第1操作。整体复杂度M^2NLog(N)

第二种:

1.通过计算所有数的最大值和最小值,二分平均数

2.遍历所有数组找最接近平均数的数。整体复杂度Log(H)*Log(N)*M

@rick-IEG应用研究▼

有个想法不知道行不行:

先合并有序数组,O(N),同时纪录合并后有序数组的源数组的index(染色);然后开始滑动窗口,使得窗口内染色数等于数组数,滑的时候更新方差

@mcsh-PCG开发工程师▼

1.八皇后问题

(1)回溯发遍历取前N-1元素求平均a,算好方差和平均值

(2)使用二分查找Arr[N],最左边、最右边、命中,未选中居中选左右两个,更新上面方差和平均值,这部分可优化计算

2.楼上rick提到滑动窗口法,需要枚举窗口内的组合

如果是10个数组,每组10个元素,按顺序1-100,滑动窗口滑不动,算法复杂度恶化为穷举

@looker-PCG开发工程师▼

有个二分想法,直接二分方差结果

1、取int_max作为初始方差,遍历每个数组,每个数组取一个接近的数值计算方差

2、后续用这个结果继续二分得到下一个结果,继续遍历每个数组取一个接近的数值重新计算方差

3、重复第二步,退出二分路径

@匿名小伙▼

从网上搜到一个类似的题,题目里只有3个数组。如果是多个,估计就更麻烦了

贴下大致思路:要从三个数组里取x,y,z,使得方差最小,就是找三个离得最近的数。因此我们固定一个数组,去另外两个数组中,一个数组寻找第一个大于等于它的数字,另一个去寻找第一个小于等于它的数字。一共是三个数组,因此一共有六种组合。

THE END
1.统计方法知识库 知识分类:|知识来源: |发布日期:https://www.stats.gov.cn/zsk/snapshoot?reference=d466cfa12a8d807d0c267a76a75d1e42_2DF4A2519591B2823E278F8050D9622B
2.算法学习:1.统计数字问题这篇博客介绍了如何使用暴力破解法和数字分析法(递归)来统计一本书页码中各数字的出现次数。对于给定的页码范围,作者提供了两种算法的实现:一种是通过双重循环直接计算,另一种则是通过递归分析数字规律。博客还包含详细的代码实现和特殊情况的处理,如前导零的排除。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/qq_51542797/article/details/123383271
3.2误差统计计算统计数据分析必须甄别并改正这样的过失误差,否则会对分析结果产生严重影响。在使用计算机软件处理数据时程序设计的质量问题也会导致误差发生。比如,当输入条件不满足模型要求而程序中未进行检查时,可能给出错误的结果。2.2 数值误差 数值误差是用电子计算机进行数据存储和计算时产生的误差,设计算法时必须了解并尽可能避免https://www.math.pku.edu.cn/teachers/lidf/docs/statcomp/html/_statcompbook/intro-error.html
4.关于统计数字问题的算法关于统计数字问题的算法 关于统计数字问题的算法 ?本书的页码从?然数1开始顺序编码直到?然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页?6表不是06或006。数字统计问题要求对给定书的总页码,计算出书的全部页码中分别?到多少次数字 0,1,2,3,9。这个https://wenku.baidu.com/view/1de9d3abe63a580216fc700abb68a98270feac4e.html
5.计算机算法设计与分析习题解答11统计数字问题在线阅读1-1统计数字问题书名: 计算机算法设计与分析习题解答 作者名: 王晓东编著 本章字数: 396字 更新时间: 2018-12-30 15:21:44首页 书籍详情 目录 自动阅读00:04:58 摸鱼模式 字号 背景 手机阅读 举报 上QQ阅读APP看后续精彩内容 下载QQ阅读APP,本书新人免费读10天 设备和账号都新为新人 登录订阅本章 https://book.qq.com/book-read/773422/16
6.关于统计数字问题的算法C语言本文介绍了统计数字问题的算法,计算出书的全部页码中分别用到多少次数字0,1,2,3,9,并有每一步的解题思路,需要的朋友可以参考下GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯https://www.jb51.net/article/70467.htm
7.关于统计数字问题的算法关于统计数字问题的算法 一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页用6表示而不是06或006。数字统计问题要求对给定书的总页码,计算出书的全部页码中分别用到多少次数字0,1,2,3,9。 这个https://www.xiuzhanwang.com/a1/Cyuyan/2917.html
8.《数学之美》第25章 条件随机场和句法分析 第26章 维特比和他的维特比算法 维特比算法是一个特殊的但应用最广泛的动态规划算法,维特比算法主要解决篱笆网络的有向图的最短路径问题。它之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题都可以用它来解码。 对于每一个给定的起始点、终止点,如果列出所有可能的路径,从中找出最https://www.douban.com/note/623299429/
9.描述统计分析数据分析行业基础语言一.描述统计分析基础知识 描述统计学:对大量数据进行归纳,大量数据的集合就是数据集,简化数据集,将一系列复杂的数据,减少为几个具有描述作用的指标。从这几个指标中了解关键的信息,利用更加直观的数据来解决问题。 几个关键的描述指标: 1.平均值:算术平均值 https://zhuanlan.zhihu.com/p/195687658
10.科学网—计算实验方法的溯源现状与展望摘要: 随着信息技术的发展, 复杂系统越来越多的呈现出社会、物理、信息相融合的特征. 因为这些系统涉及到了人和社会的因素, 其设计、分析、管理、控制和综合等问题正面临前所未有的挑战. 在这种背景下, 计算实验应运而生, 通过“反事实”的算法化, 为量化分析复杂系统提供了一种数字化和计算化方法. 对于计算实验https://blog.sciencenet.cn/blog-2374-1371452.html
11.必修一《数据与计算》复习提纲与练习题15、在教科书中利用Python探究电流和电压、电阻的关系实验里,除了可以通过书中的JuyterNotebook外,处理数据还可以通过下列()工具实现[单选题]*A.PythonIDLE(正确答案)XmindC.网络画板D.几何画板第三章算法基础练习题[填空题] 1、人们利用计算机解决问题的基本过程为() ①调试运行程序 ②分析问题 ③设计算法 ④问https://www.yxfsz.com/view/1667461982557671425
12.长沙市就业与社保数据服务中心:长沙市“智慧人社”项目(一期)采购同时也是对企业各业务数据的汇总分析,数据可通过服务进行交换共享。支持对企业总体概况、行业分布、百强企业、企业行政区划分布情况、画像查询等方面的统计分析。 2.人社数字驾驶舱 数字驾驶舱综合社保、人才、劳动监察等多个单位数据,采用图形、滚动的表格、大字、地图、滚屏文字等动静相结合的方式将实时数据及按月、按https://www.bidcenter.com.cn/newscontent-205864182-1.html
13.永川这15家企业招人,找工作的看过来!澎湃号·政务澎湃新闻1.以电话形式处理客户有关业务的咨询、查询及投诉等客户服务工作,解决客户所提出的问题,并跟踪、反馈处理结果 2.负责客户所反应问题的归类、统计、分析等工作 3.对服务中发现的热点、难点问题及其他有可能造成越级投诉的服务质量隐患,及时上报公司领导 4.负责满意度回访,针对用户不满意问题,合理并积极协调公司内部资源https://www.thepaper.cn/newsDetail_forward_8515765
14.数字信号处理教程(第4版)(简明版)pdfepubmobitxt电子书下载第一部分是离散时间信号(序列)与系统的基本概念和时域、频域(包括z变换域)的分析方法与算法,包括离散傅里叶变换及其快速算法,模拟信号用数字信号处理的原理方法,这包括第1、2、3、4章的内容;第二部分为IIR及FIR数字滤波器的基本概念、理论、结构与设计方法,这包括第5、6、7章;第三部分为多抽样率数字信号处理https://windowsfront.com/books/11243105
15.值得每个程序员收藏的算法知识总结51CTO博客本部分主要是笔者在学习算法知识和一些相关面试题所做的笔记,如果出现错误,希望大家指出! 一、排序 1、冒泡排序 冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端, 最终达到完全有序。 https://blog.51cto.com/u_15809510/5835164
16.DizzyK/ustccyber算法分析与设计 教材: 算法导论 ( 原书第3版 ) , 机械工业出版社, Thomas H. Cormen 教学内容: 算法入门, 函数增长, 递归分析, 分治策略, 概率分析, 随机算法, 排序, 顺序统计学, 树搜索, 动态规划, 贪心算法, 回溯法, 分支限界法, 随机算法应用 https://toscode.gitee.com/DizzyK/ustc_cyber_security
17.软考高级——信息系统项目管理师(第4版)思维导图模板各类新模式就是无源之水,数字化转型也就成为无本之木。 专业性。工业互联网数据的价值在于分析利用,分析利用的途径必须依赖行业知识和工业机理。制造业 千行百业、千差万别,每个模型、算法背后都需要长期积累和专业队伍, 只有深耕细作才能发挥数据价值。 https://www.processon.com/view/654c455f8f11b40fe56ece43
18.用于制图的地理计算和地理空间人工智能(GeoAI)的进展开源地理地理计算的优点是利用计算方法和工具来探索地理空间和地球数据,并产生新知识,同时,GeoAI 提供了机器学习、深度学习、迁移学习等强大的学习算法,为地理空间和地球问题开发有效且创新的解决方案。制图是 GIS 和地球观测的重要组成部分,有助于了解自然和建筑环境。传统上,基于空间统计推断理论的空间分析用于制图。尽管范围和https://www.osgeo.cn/post/10dfe