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

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

选择的数字组合应该是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

这个case看起来是ok的

@zhenle-IEG开发工程师▼

假如:

1.数组的数量为M

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

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

两种方式:

第一种:

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

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

第二种:

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

@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.面试题人工智能工程师高频面试题汇总:机器学习深化篇(题目+解析: Sigmoid函数在输入值远离原点时梯度非常小,容易导致梯度消失问题。 09 Leaky ReLU相比于ReLU的主要优势是什么? A. 没有梯度消失问题 B. 更快的计算速度 C. 减轻了神经元死亡问题 D. 输出范围更宽 答案: C 解析: Leaky ReLU通过在负值区域引入一个斜率,减轻了ReLU中的神经元死亡问题。 https://blog.51cto.com/u_15343919/12843670
2.Python每日一练:算法的使用指南几何级数时间复杂度:适用于汉诺塔问题。 - 阶乘时间复杂度:适用于旅行商问题,该问题属于NP完全问题。 01常用算法 穷举法,亦称暴力破解法,通过对所有可能的选项进行逐一验证,直至发现正确答案为止。 五人分鱼的案例 fish=6# 初始化鱼的数量为6 whileTrue:# 使用while True循环,表示这是一个无限循环,直到找到符合条件https://yun.zjer.cn/index.php?r=space/person/blog/view&sid=172778&id=39543787
3.算法期末考试练习题!!!伊甸一点A 子问题必须是一样的 B 子问题不能够重复 C 子问题的解可以合并 D 原问题和子问题使用相同的方法解 14.下列算法中不能解决0/1背包问题的是(A ) A 贪心法 B 动态规划 C 回溯法 D 分支限界法 15.以下( C )不能不能在线性时间完成排序 A 计数排序 B 基数排序 C 堆排序 D 桶排序 https://www.cnblogs.com/zpfbuaa/p/5087086.html
4.在线扑克如何作弊:一次软件安全研究安全IT业界软件问题是引起安全风险的一种臭名昭著的形式,而且它常常被 过分相信防火墙和加密技术的公司所忽略。软件应用程序会给一个系统带来非常多的安全漏洞,我们每天都会花大量的时间来找出并解决这些软件安全问题,所以我 们注意到在线扑克也是迟早的事。本文的其余部分就专门来讨论我们在一个流行的在线扑克游戏中发现的软件https://www.open-open.com/news/view/54e21b
5.AlphaFold3来了!全面预测蛋白质与所有生命分子相互作用及结构蛋白质设计的底层逻辑与基本规则,学习蛋白质结构预测、蛋白质序列设计、蛋白质-蛋白质相互作用分析、以及蛋白质功能注释和优化方法,掌握深度学习在蛋白质设计中的常见算法以及实际方法,培养学生具备基本的深度学习蛋白质设计能力和蛋白质人工智能应用的前沿视野,为参与解决生物医学、生物工程和生物能源等方面的重大问题提供https://cloud.tencent.com/developer/article/2437597
6.算法最接近点对问题一维在计算机科学和算法设计中,"最接近点对问题"是一个经典的几何问题,它寻找一组点集中距离最近的两个点。在这个场景下,我们关注的是在一维空间中的点对问题,也就是只考虑沿一条直线分布的点。这个问题相对简单,但仍然是理解和掌握更复杂多维最接近点对算法的基础。 在给定的描述中,提到的实现方式是通过结构体数组https://download.csdn.net/download/fishloyal/3893880
7.天花板编程手把手计划第1期第3天这个算法的特点是不需要回退。 以上两种是数据结构中的经典算法,不过我们今天要讲的并非这两种。所以千万不要被吓到了。 2.2 功能分解 首先说一下,经典的编程问题,每个都有经典的解法。这些解法是很多人共同总结出来的可以解决一类问题的最优算法。然而,对于某一个具体的问题,这些算法并不一定是最优的或者说最简单https://www.jianshu.com/p/e6d4733daca8
8.百度笔试题目及答案现在要求设计一个算法, 给定一个数k 判断出k是否在这个矩阵中。 描述算法并且给出时间复杂度(不考虑载入矩阵的消耗) 算法思想: 沿着对角线查找,获得i,使得k位于a[i][i]与a[i+1][i+1]之间。 k只可能存在于a[i][i]对应的右上角矩阵 和a[i+1][i+1]对应的左下角矩阵。 https://yjbys.com/bishi/timu/745487.html
9.力扣(LeetCode)全球极客挚爱的技术成长平台海量技术面试题库,拥有算法、数据结构、系统设计等 1000+题目,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode-cn.com/
10.高中数学新课标研读心得体会(精选13篇)无论是软件还是硬件都离不开算法的设计,算法原为计算机程序设计的组成部分,现在把它放到高中数学课本的必修部分,充分体现了新课标重应用、重能力的思想。算法严格地说是数学的一个分支,然而算法的相关概念比较枯燥,理论过于抽象,对学生的能力要求较高,所以在教学过程中往往难以把握,也不容易引起学生的兴趣,俗话说"https://www.ruiwen.com/word/gaozhongshuxuexinkebiaoyanduxindetihui.html
11.重建生态:价值与系统的力量——第七届中国教育创新年会11月启幕我们必须从这些底层的逻辑,演绎出思维的脚手架、行动的工具箱,系统的方法论,人人参与,去搭建我们重构教育、解决问题的操作支点与行动空间,并推动我们自己分析现象,理清逻辑,有效行动。 我们必须以系统的设计,生态的视野,重建教育价值,在2020这个划时代的转折时刻,展开一场严肃的讨论:教育的基础价值和根本目标,究竟是https://sghexport.shobserver.com/html/toutiao/2020/08/26/250533.html
12.福建省教育厅关于公布福建省普通高中学业水平合格性考试信息技术“算法与程序设计”模块是高中信息技术课程的选修模块,以问题解决与程序设计为主线,揭示利用计算机编程解决问题的过程。通过本模块的学习,使学生体验算法思想与方法,了解算法和程序设计在解决问题过程中的地位和作用。能从简单问题出发,设计算法,并能初步使用一种程序设计语言编制程序、实现算法、解决问题。 https://fszx.lyun.edu.cn/info/1039/1057.htm
13.索尼微单A6500评测(全文)索尼A6500数码影音评测索尼始终没有给其APS-C系列机身增加前拨轮,这可能是对相机操控感影响最为明显的一个问题,其设计采用机顶和机背的拨轮来完成操作,这也是和其他传统专业级相机在操控设计上最大的不同之一。就实际操作而言,相机的效率不至于因此降低,但的确需要适应。 https://dcdv.zol.com.cn/620/6202112_all.html
14.计算力学快讯,第8卷,第11期计算力学快讯计算力学快讯简介:本快讯是分享计算力学及相关软件信息的一个交流平台;由河海大学工程与科学数值模拟软件中心、江苏省力学学会信息服务部、中国力学学会计算力学软件专业组、南昌大学航空航天研究院联合主办;免费订阅,自由退订;欢迎各位计算力学同仁的投稿和反馈意见。 http://jsstam.org.cn/?list_73/1112.html
15.TCCT通讯Newsletter2017No.01一种基于非线性振荡器的步态轨迹自适应算法 自动化学报, 2016 Vol. 42 (12): 1951-1959 Abstract | PDF 自动化学报,2016年 第11期 目录 目录 自动化学报, 2016 Vol. 42 (11): 0-0 Abstract | PDF 论述与评论 李贤伟, 高会军 有限频域分析与设计的广义KYP引理方法综述 自动化学报, 2016 Vol. 42 (11https://tcct.amss.ac.cn/newsletter/2017/201701/journal.html
16.科学网—经典的算法回顾温故而知新,下面回顾一下经典算法:递归法、分治法、动态规划、贪心法、回溯法、分支限界法、概率算法、线性规划法、近似算法个人感觉在神经认知计算中可能需要从这里面诞生出来。 递归法 递归(Recursion)是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用。在数学与计算机科学中,是指在函数https://blog.sciencenet.cn/blog-315535-665392.html
17.算法决策:人工智能驱动的公共决策及其风险*【内容提要】作为一种自主算法决策,人工智能技术已经渗透到公共决策过程的各个环节,使公共决策模式产生重大变革。本文基于公共政策循环理论的视角,提出了一个人工智能算法对公共政策的问题界定与议程设置、政策制定、政策执行和政策评估四个阶段的影响与应用的分析框架,指出人工智能算法通过其大数据处理能力和预测分析能力,对https://www.opentimes.cn/html/Abstract/20842.html
18.优化面向智能交通的整数规划问题运筹OR帷幄拉格朗日松弛方法可应用于交通离散网络设计(DNDP)问题[2],寻找可靠路径规划问题[3],可靠设施选址问题[4]等。传统拉格朗日松弛方法应用于交通系统优化中存在对称性等问题,可通过变量分离等方法解决[5]。 3.2 交替方向乘子法 交替方向乘子法是一种结合了增广拉格朗日松弛算法和块坐标下降方法的对偶分解算法。交替方向乘子https://www.shangyexinzhi.com/article/5213211.html
19.高中信息技术课程标准各选修模块对开设条件的要求有所不同,各学校至少应开设“算法与程序设计”“多媒体技术应用”“网络技术应用”“数据管理技术”中的两个,也要制定规划,逐步克服经费、师资、场地、设备等因素的制约,开出包括“人工智能初步”在内的所有选修模块,为学生提供更丰富的选择。建议将选修模块安排在高中一年级第二学期或https://www.fqkhzx.cn/index/article/view/id/94.html