算法群模拟面试记录

第一场:2018年12月30日(周日),北京时间早上五点。

写在最前面:好不容易五点爬了起来围观mock,结果早上周赛睡过去了,唉。orz。

面试官:wisdompeak,同学:littleRainRain

第一题:有个花圃矩阵 grid,size 是n * m,花圃上面的一个点,坐标是(x, y)上面可能有花,可能没有花(没有花的话,矩阵上的值为0)。如果一个Q(x,y)上有花的话,grid[x][y] = W, W代表这朵花的香气,随着距离这朵花越来越远,花的香气会逐渐减弱,减弱的关系和两个点的曼哈顿距离成正比,比如在点 P(x1, y1),能闻到在点Q的花的香味是 f = W / (abs(x- x1) + abs(y-y1))。输入一个P点的坐标(px, py),求在这个P点,能闻到花的香味最重的点坐标。

题解:直接二维矩阵遍历就行。只有一点需要注意的就是曼哈顿距离为0的时候,0不能做除数,怎么处理要问面试官,不要自己yy。

follow-up,能不能让算法更快一点?(其实我觉得这个问法不是特别的优秀,第一次听到了比较容易懵逼,如果我是面试者的话下面不知道该怎么接。直接问具体条件有什么变化,还是新增了什么条件么)

我第一次听到follow-up有点懵逼,我还以为难道bfs能解...但是迅速的否认了自己的想法,想象一下如果有个点距离给出的P点非常非常远,但是它的W非常非常大,这个点也有可能是candidate。

后来面试官解释了一下,假设这个花圃上面就几朵花呢?然后调用query方法N次,如何加速这个算法(言下之意是这个矩阵是一个稀疏矩阵)

ok,那我们开始预处理下矩阵,把有花的坐标点给存下来,存成一个数组,假设叫flowerCoor,然后每次query的时候就从flowerCoor里面取花的坐标,然后计算。

 

第二题:leetcode 837 New 21 Game

https://leetcode.com/problems/new-21-game/description/

面试官化简了一下这个题,他的问题是桌面上有10张扑克牌,代表[1, 10]这个区间的数字,玩家一开始有个基础分数 score, 游戏开始,score 代表现在点数,如果 score < 17, 那么庄家随机翻一张牌,累加score;如果 score 在[17, 21] 这个区间中,就代表庄家win;如果 score > 21 就代表玩家win。求玩家 win 的概率。

前面怎么讨论的我有点记不清了,但是妹子说了一句“这个题有点递归的意思”,然后就开始递归做。递归可以做。(不知道如果递归写全对的话,下面follow-up会不会扩大规模考 dp。不过想不到 dp不知道是 hired 还是 weak hired 了)

lc递归会超时,我加了记忆化递归也超时了 :( ,lc给的是 dp 解法。

mock的时候群里小伙伴有人说这题和 688 很像:https://leetcode.com/problems/knight-probability-in-chessboard/description/

 

第三题:leetcode 636 Exclusive Time of Functions

https://leetcode.com/problems/exclusive-time-of-functions/description/

第三题有点类似资源抢占调度的一道题。

 task 1:  start,  0

 task 2:  start,  2

 task 2:  end,  3

 task 1:  end,  4

 task 2:  start, 6

 task 2:  end,  7

start, end just mean get schecduled, like process to CPU, only one cpu, so if task2 started, task 1 paused。

要求返回每个task占用cpu的时间。返回map也好,数组也好,都行。

用stack解,我还没仔细想。我估计应该是用一个变量或者pair存某个任务被中断的时间?

 

第四题:leetcode 528. Random Pick with Weight

https://leetcode.com/problems/random-pick-with-weight/description/

群主给的就是有 N 个人种,每个人种的占比,实现一个算法,这个算法每次都会返回一个人种,在调用K(K是一个很大的数)次的情况下,所有的返回值的比例满足人种的占比。

given possibility like

chinese  22%

american:  5%

indian: 21%

...

各个概率之和保证为1,随机选一个,要求符合概率,如按22.333% sample chinese..

 

妹子一开始想的有点类似于基数了,就是比如说chinese占了22%,American占了 5%,那我搞一个 100 个人的数组,前 22 个元素 代表 chinese, 23 ~ 28 个元素代表 american。然后 1 ~ 100 内随机一个随机数,求得。然后面试官反问,如果占比不是整数呢,比如 22.345676798878888%这种,那是不是要开一个巨大的数组存这些数。于是这个思路走进死胡同了。群里有小伙伴说,如果有个 0 ~ 1 的随机数发生器就好了。我们可以这么思考,就是我们把概率数组求前缀和,然后随机一个 0 ~ 1 的数,在前缀和数组中二分这个数字就可以了。

题解:前缀和 + 二分。

 

转载于:https://www.cnblogs.com/zhangwanying/p/10199941.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js对象排序

Object.keys(objs).sort()可以获取到排好序的keysvar objs {f: {id: 2,name: 2}, a: {id: 3,name: 3}, c: {id: 1,name: 1} }; // 自定义排序规则&#xff0c;按对象的id排序 var sortedObjKeys Object.keys(objs).sort(function(a, b) {return objs[b].id - objs[a].id; });…

吴恩达机器学习笔记 —— 9 神经网络学习

本章讲述了神经网络的起源与神经元模型&#xff0c;并且描述了前馈型神经网络的构造。 更多内容参考 机器学习&深度学习 在传统的线性回归或者逻辑回归中&#xff0c;如果特征很多&#xff0c;想要手动组合很多有效的特征是不现实的&#xff1b;而且处理这么大的特征数据量…

js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解

1 escape()函数 定义和用法escape() 函数可对字符串进行编码&#xff0c;这样就可以在所有的计算机上读取该字符串。 语法escape(string) 参数 描述string 必需。要被转义或编码的字符串。 返回值已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。 说明该方…

【SRH】------node遵循的规范,模块划分

1.node遵循的是COMMONJS规范&#xff08;规范即规定如何导入导出&#xff09;1、导入&#xff1a;require 2、导出&#xff1a;module.exports2.模块分类&#xff1a;1、核心模块nodejs下载安装完成后会自带一些模块&#xff0c;这些模块不需要下载&#xff0c;可以直接通过r…

vue.js开发环境搭建

环境准备 Node.js Javascript的运行时环境npm Node.js下的包管理工具webpack 前端资源模块化管理和打包工具vue-cli 脚手架构建工具cnpm npm的淘宝镜像 Vue.js安装 Node.js的安装非常容易&#xff0c;首先从官网下载你所需操作系统的版本&#xff0c;然后一直下一步就ok&…

mysql数据库删除一条数据后还想让新增数据从空缺id处开始

方法1&#xff1a; truncate table 你的表名 //这样不但将数据全部删除&#xff0c;而且重新定位自增的字段 方法2&#xff1a; delete from 你的表名 dbcc checkident(你的表名,reseed,0) //重新定位自增的字段&#xff0c;让它从1开始 方法3&#xff1a; 如果你要保存你的数…

Object相关方法

const object1 {a: somestring,b: 42,c: false };console.log(Object.values(object1)); // expected output: Array ["somestring", 42, false]该Object.values()方法返回给定对象自己的可枚举属性值的数组&#xff0c;其顺序与for...in循环提供的顺序相同&#xf…

用Itextsharp 组件导出PDF 的文档的方法

Itextsharp 是一个很强大&#xff0c;开源的&#xff0c;轻量级的 PDF 生成组件&#xff0c;官方网上好像没有相应的API 说明文档&#xff0c;以下是在工作中使用的心得与体会&#xff0c;并附上源码&#xff0c;功能包含了pdf 的创建&#xff0c;table 的创建&#xff0c; 图片…

正则基础知识

创建正则表达式 1.使用new来创建 var exp new RegExp(box , gi );g 全局匹配 i 忽略大小写 m 多行匹配2.使用字面量 var exp /box/gi; 直接用2个 / ; 在俩个斜杠后加上模式修饰符&#xff1b; 俩种创建方式比较: 1.使用字面量方式创建用的更加广泛; 2.当要匹配的内容是变量时,…

详解 vue-cli 的打包配置文件代码

一、前言 对于webpack基础不好&#xff0c;node指令不通的童鞋。估计对自己搭建Vue、react脚手架是相当头疼的&#xff0c;有种无从下手的感觉。然而&#xff0c;从头看这2块&#xff0c;耗时太长&#xff0c;而且说实话得练才行&#xff0c;不练练手看不明白。那大多数人就采…

室内定位(一)

转自&#xff1a;http://www.cnblogs.com/rubbninja/ 各种室内定位方法 具体的室内无线定位技术可以这样来分类&#xff1a; 无线设备&#xff1a;WIFI、蓝牙、ZigBee、RFID、UWB、LED、红外线、超声波、麦克风等定位信息&#xff1a;主要是RSS&#xff08;接收信号强度&#x…

不同浏览器css引入外部字体的方式

/*** 字体后缀和浏览器有关&#xff0c;如下所示* .TTF或.OTF&#xff0c;适用于Firefox 3.5、Safari、Opera * .EOT&#xff0c;适用于Internet Explorer 4.0 * .SVG&#xff0c;适用于Chrome、IPhone * 比如:*/ font-face {font-family: MyFont;/*定义字体名称*/src: url(fon…

Promise实践

var doSomething function() { return new Promise((resolve, reject) > { resolve(返回值); }); };let doSomethingElse function() { return 新的值; }doSomething().then(function () { return doSomethingElse(); }).then(resp > { console.warn(resp); console.wa…

JsonBuilder初出茅庐

互联网这股东风不久前刮到了甘凉国&#xff0c;国王老甘独具慧眼&#xff0c;想赶紧趁着东风未停大力发展移动互联网&#xff0c;因为他笃信布斯雷的理论&#xff1a;“站在风口上&#xff0c;猪都能飞起来”。无奈地方偏僻落后&#xff0c;国内无可用之才啊。老甘一筹莫展的低…

vue-cli 打包部署

1、一般打包 &#xff1a;直接 npm run build。&#xff08;webpack的文件&#xff0c;根据不同的命令&#xff0c;执行不同的代码的&#xff09; 注&#xff1a;这种打包的静态文件&#xff0c;只能放在web服务器中的根目录下才能运行。 2、在服务器中 非根目录下 运行的 打包…

EXCEL怎么打20位以上的数字?

EXCEL怎么打20位以上的数字&#xff1f; 转载于:https://www.cnblogs.com/macT/p/10208794.html

vue render函数

Vue中的Render渲染函数 VUE一般使用template来创建HTML&#xff0c;然后在有的时候&#xff0c;我们需要使用javascript来创建html&#xff0c;这时候我们需要使用render函数。比如如下我想要实现如下html&#xff1a; <div id"container"><h1><a hre…

Nexus介绍

转自&#xff1a;https://www.cnblogs.com/wincai/p/5599282.html 开始在使用Maven时&#xff0c;总是会听到nexus这个词&#xff0c;一会儿maven&#xff0c;一会儿nexus&#xff0c;当时很是困惑&#xff0c;nexus是什么呢&#xff0c;为什么它总是和maven一起被提到呢&#…

vue-cli 打包

一项目打包 1 打包的配置在 build/webpack.base.conf.js文件下 常量config在vue/config/index.js 文件下配置&#xff0c;__dirname是定义在项目的全局变量&#xff0c;是当前文件所在项目的文件夹的绝对路径。 2 需要修改vue/config/index.js 文件下的将build对象下的assets…

乘风破浪:LeetCode真题_010_Regular Expression Matching

乘风破浪&#xff1a;LeetCode真题_010_Regular Expression Matching 一、前言 关于正则表达式我们使用得非常多&#xff0c;但是如果让我们自己写一个&#xff0c;却是有非常大的困难的&#xff0c;我们可能想到状态机&#xff0c;确定&#xff0c;非确定状态机确实是一种解决…