看看下面两道题,它的解答非常简单,即使没学过信息学的人也可以想到答案。你能在多短的时间内想出问题的算法来?一小时?一分钟?一秒钟?
1. 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。
2. 给你一个数组A[1..n],请你在O(n)的时间里构造一个新的数组B[1..n],使得B[i]=A[1]*A[2]*...*A[n]/A[i]。你不能使用除法运算。
Solution:
1. 遍历链表,给每个元素赋一个0到1之间的随机数作为权重(像Treap一样),最后取出权重最大的k个元素。你可以用一个堆来维护当前最大的k个数。
2. 从前往后扫一遍,然后从后往前再扫一遍。也就是说,线性时间构造两个新数组,P[i]=A[1]*A[2]*...*A[i],Q[i]=A[n]*A[n-1]*...*A[i]。于是,B[i]=P[i-1]*Q[i+1]。
突然想到,给别人(MM?)介绍信息学时,用这两道题当例子挺合适的。
相关推荐
Google面试题——蓄水问题
问题: 有一块矩形土地被划分成 N×M 个正方形小块,每块是一平方米。这些小块高低不平,每一小块地都有自己的高度H(i, j)米。水可以由任意一块地流向周围四个方向的四块地中,但不能直接流入对角相连的小块中。一场大雨后,许多低洼地方都积存了不少降水,求出它最多能积存多少立方米的降水么? 思路: 先看一维的情况如何处理: 预处理: 对每个格子求左边和右边的最高高度。 遍历每个格子: 找到左右
给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素
给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。 答案来自网络: 蓄水池抽样:先保存前k个元素, 从第k+1个元素开始, 以1/i (i=k+1, k+2,…,N) 的概率选中第i个元素,并随机替换掉一个已保存的记录,这样遍历一次得到k个元
一道有意思的Google面试题
看到一道有意思的Google面试题,下面来分享一下 题目:假设在一段高速公路上,30分钟之内见到汽车经过的概率是0.95。那么,在10分钟内见到汽车经过的概率是多少?(假设概率恒定) 对于这种题目,咋一看好像缺条件,其实不然。在生活中遇到的许多问题都像这样的问题一样,题目叙述简单,但仔细一想又不是那么简单,那么需要激活发散思维,一般都可以从多角度来解答它。 下面给出两种解法:
未知长度链表数据随机抽取问题
转自 董的博客 1. 问题由来 Google曾经有一道非常经典的面试题: 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)? 这道题的解法非常多,网上讨论也非常热烈。本文要讨论的是,这个问题是从何而来,有什么实用价值?
YOLOv8中Anchor-Based、Anchor-Free及样本分配策略
本文主要介绍yolov8中的anchor机制与样本分配策略的静态策略和动态策略
图形引擎实战:镭射效果制作分享
该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。
链表中随机取出k个数
题目: 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。 解答: 先选中前k个,从第k+1个元素到最后一个元素为止, 以1/i (i=k+1, k+2,...,N) 的概率选中第i个元素,并且随机替换掉一个原先选中的元素,这样遍历
Quartus Prime器件库安装实战:从版本选择到权限避坑指南
本文详细介绍了Quartus Prime器件库的安装全流程,从版本选择、精准下载到权限设置和安装验证。重点解析了版本匹配的黄金法则、管理员权限的必要性以及安装路径的最佳实践,帮助用户避开常见陷阱,确保器件库安装一次成功。
两道O(n)面试题
两道O(n)面试题1. 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有 k个,且它们是完全随机的(出现概率均等)。 保存前k个元素于集S. 从第k+i(i>0)个开始, 令r1=rand(1,k+i), 如果r1>k, 则保持现有的选择集合S不变 . 如果r1Reservoir Sampling (蓄水池抽样) Init : a reservoi
AstrBot插件开发全攻略:从零编写一个天气查询插件(Python实战)
本文提供了一份详细的AstrBot插件开发实战指南,手把手教你使用Python从零编写一个智能天气查询插件。内容涵盖插件系统核心设计、开发环境搭建、API调用与数据处理、自然语言交互实现以及插件打包发布全流程,帮助你快速掌握基于AstrBot框架的聊天机器人功能扩展技能。
Cherry Studio部署MCP服务报错全记录:从零解决‘Connection closed‘问题
本文详细记录了在Cherry Studio中部署MCP服务时遇到‘Connection closed’报错的完整排查与解决过程。文章从环境依赖(UV、Bun)的安装验证、绝对路径配置、网络镜像源设置,到服务端手动调试与Cherry Studio配置检查,提供了一套系统性的解决方案,帮助开发者彻底解决此类连接问题。
算法小节
1. 给你一个长度为N的链表。N很大,但你不知道N有多大。你的任务是从这N个元素中随机取出k个元素。你只能遍历这个链表一次。你的算法必须保证取出的元素恰好有k个,且它们是完全随机的(出现概率均等)。 解:先选中前k个,从第k+1个元素到最后一个元素为止,以k/i(i=k+1, k+2,...,N)的概率选中第i个元素,并且随机替换掉一个原先选中的元素,这样遍历一次得...
【异常】OpenClaw 项目 `fetch failed` 报错问题排查与解决方案Response interrupted: TypeError: fetch failed
针对无超时控制、异常兜底缺失导致的请求中断,封装标准化的安全请求工具,一次性解决超时控制、异常捕获、日志埋点三大问题,全项目替换原生。:将项目运行的 Node.js 版本升级至 18.x 及以上 LTS 版本,使用 Node.js 内置的稳定版。实现的网络请求环节,包括但不限于:第三方开放接口调用、内部服务接口通信、跨域资源请求、外部配置拉取等场景。:针对无法升级 Node.js 版本的存量环境,通过社区稳定兼容包替换原生。类型异常,直接造成业务请求响应中断。第二步:业务代码改造,替换原生。
全新整理 微软 Google等公司的面试题及解答 第161-170题
全新整理 微软 Google等公司的面试题及解答 第161-170题
大模型新闻摘要生成质量评估工具
大模型新闻摘要生成质量评估工具 关键词:大模型、新闻摘要、质量评估、自然语言处理、算法 摘要:本文将探讨大模型新闻摘要生成质量评估工具的设计与应用。首先介绍大模型新闻摘要生成的背景和问题,然后深入分析质量评估的难点和重要性,接着介绍大模型的
STM32H750VB与AD5292通讯,写入阻值后,AD5292 的阻值没有变化,如何解决?
🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up! 备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。
Google面试题——及答案
1、 村子里有100对夫妻,其中每个丈夫都瞒着自己的妻子偷情。。。村里的每个妻子都能立即发现除自己丈夫之外的其他男人是否偷情,唯独不知道她自己的丈夫到底有没有偷情。村里的规矩不容忍通奸。任何一个妻子,一旦能证明自己的男人偷情,就必须当天把他杀死。村里的女人全都严格照此规矩办事。一天,女头领出来宣布,村里至少有一个丈夫偷情。请问接下来会发生什么事? 答案:这是一个典型的递归问题。一旦所有的妻子
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
google面试题
转帖]Google面试题 发信人: smurf (蓝精灵), 信区: IQDoor 标 题: Google面试题 发信站: 水木社区 (Thu Nov 10 18:49:13 2005), 站内 今年10月底,Google在美国《麻省技术评论》、《LinuxJournal》、《Mensa 》、《今日物理》等几本专业杂志上刊登了一份“Google实验室能力倾向测试”的 试卷,开头蛊惑地写着“试试看!
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
赌5毛钱,你解不出这道Google面试题
作者 | Kevin Ghadyani 译者 | 清儿爸 编辑 | Rachel 出品 | AI科技大本营(ID:rgznai100) 为了更了解其他人对软件工程的看法,我开始疯狂在 YouTube 上追TechLead的视频。在接下来的几天里,我为他在 Google 工作时提出的一道面试题想出了各种解决方案。 通过 TechLead 模拟 Google 面试(软件工...
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
Google刁钻古怪面试题
一、前言 上个星期的面试题前言也提过,每周一篇的面试题是我在一周内看过的面试题中选择大众较好的来分享自己的解题过程,这周就偷懒一下,来看下 Google 刁钻古怪的面试题,其中大部分的解答是参考了网友的答案,因为本人实力有限,真的不知从何思考。明天(2017年1月14日22:48:07)就是年会了,公司从深圳到珠海举行两天一夜的年会,不禁感慨,时间过得很快,上一年刚实习的时候,我也是在珠海过的年
全新整理:微软、Google等公司的面试题及解答、第161-170题
原作者地址:http://blog.youkuaiyun.com/v_JULY_v/article/details/6313257 全新整理:微软、Google等公司非常好的面试题及解答、第161-170题 整理:July。 时间:二零一一年四月十日。 微博:http://weibo.com/julyweibo。 出处:http://blog.youkuaiyun.com/v_JULY_v。 --
微软、Google等公司非常好的面试题及解答、第61-70题
全新整理:微软、Google等公司非常好的面试题及解答、第61-70题 整理:July。 时间:二零一一年四月十日。 微博:http://weibo.com/julyweibo。 出处:http://blog.youkuaiyun.com/v_JULY_v。 ---------
微软、Google等公司的面试题及解答、第161-170题
全新整理:微软、Google等公司非常好的面试题及解答、第161-170题 整理:July。 时间:二零一一年四月十日。 微博:http://weibo.com/julyweibo。 出处:http://blog.youkuaiyun.com/v_JULY_v。 ------------------------------- 引言 此微软100题V0.2版的前60题
LeetCode打卡--Google面试题一
文章目录Google面试题一LeetCode 14. Longest Common PrefixLeetCode 20. Valid ParenthesesLeetCode 43. Multiply StringsLeetCode 48. Rotate ImageLeetCode 31. Next PermutationLeetCode 23. Merge k Sorted ListsLeetCo...
Go Quiz: Google工程师的Go语言面试题
Google工程师和Go语言布道者Valentin Deleplace会不定期分享一些Go语言的趣味题目。 我选取了最近的几道题目,给大家春节加加餐。
2319



被折叠的 条评论
为什么被折叠?



