今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题09. 用两个栈实现队列。...题目链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/ 一、题目描述 用两个栈实现一个队列。...队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。...,[]] 输出:[null,-1,null,null,5,2] 提示: 1 <= values <= 10000 最多会对 appendTail、deleteHead 进行 10000 次调用 二、题目解析...实名吐槽这道题目的示例描述,我第一次真的没有看懂是啥意思。。。。
问题 在一个 Java 群里有位群友分享了一道关于 Java 的题目,问代码是否抛异常。...不知道大家是怎么考虑的。后来这位群友,给出的答案是不会抛出异常,输出的结果是 nullnull,且计算长度是 8 。感觉比较有意思,就自己分析了一下。...还是需要从 Java 的内部去进行了解。 分析 分析的最直接的方法应该是看 JDK 的源码,但是 JDK 的代码浩如烟海,不知从何看起。那么就直接看其反汇编代码。...那么,这里我们就来看 StringBuilder 的 append 方法的源码(如果不看反汇编代码,我根本想不到这里要看的是 StringBuilder 类的 append 方法)。...我个人觉得,在项目中总会出现各种奇奇怪怪的问题,而一些奇奇怪怪的问题却是我们平时疏忽的基础或细节造成的,因此也在空闲之余,多多关注基础知识和技术细节,会有助于自己解决很多奇奇怪怪的问题。
有趣的树状数组题目 Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gathering of...两头牛之间通讯的花费为max(ai,aj)*dis。两牛的音量最高值 * 两牛距离,求所有牛之间的交流的花费。 暴力的话就是O(n^2)。题目数据这样子搞肯定超时。那么我们可以想想数据结构来优化。...可以想到,我们对每对牛进行处理的时候,我们优先考虑的是音量大的那头牛。那么我们从音量小的牛开始算起。先按音量排个序。...前面的牛的距离总和sumfront为当前牛的位置 * 在前面的牛的个数(音量比当前牛小)减去到当前牛累计的位置之和。...sumlast的计算很巧妙,用已经遍历过的前缀和(音量比当前牛小,代码中用total表示)减去当前牛前面的所有牛的位置之和再减去当前位置 * 右边的牛的个数(这里包括它本身)`。
再早些在大二的时候,有个学姐在群里问过的一道她遇见的一道类似的面试题,我们先来从这道题开始,逐步剖析这种randX()-->randY()的题目怎么做。 ...当时我给出了一个正确的解答,但没做过详细分析。 我的解答是这样的,用两次调unFairRand结果的组合来返回0或者1,两次结果是01就返回0,10就返回1,00或者11就重新算一次。...01和10的概率都是16%。算一次就返回0和1的概率是32%,但还有68%的可能再算一次。...不过不用担心,我们构造的函数不管内部计算多少次,只要返回1或者0,其概率是一样的,这也满足题目要求,代码如下。...回顾下题目还有另一个要求,尽可能少调用给你的rand函数,从概率的角度来看,取的数越大,需要再次计算的几率就越小,调用给定函数的次数就越少。
需求:一个map,key为String类型,value为Integer类型,value保存了10个数字,其中有小于10的,有大于10的,设计一种方法返回把map中大于10的数字都删除的map。...的key装到list中 List list=new ArrayList(); for (Entry entry :...,将value>10的元素的key装到一个list里面,然后在遍历list的过程中对每一个元素执行map.remove(key)方法。...方法3是重新创建一个Map,将原来的map遍历出来,将value<=1的map的key和value装到新map中,最后返回新创建的map。 其中方法1和方法3都能执行成功,如图 ?...function2.png 会发生并发修改异常,是因为在迭代的时候操作了集合,而map很关键的一点就是:不能在迭代过程中执行集合的任何方法。
下午,在上班,读者发来一道题目,问我怎么做。我大概瞄了一眼,看题目也不难。就先让他自己上网查下。 过了一会,他说查不到,问了群里,大家也不太会。 好吧,起码这位读者自己思考过,也问过了。...题目如下,找出代码中错误的地方,并改正。...应该改为如下的形式。 char a[6]; char *str=a; 有争议的地方是 printf(str); 。第一次见这种用法,第一反应是不对的。...由于printf支持可变参数,所以后续变量的个数就需要通过str中的格式化串来确定。...当str串中包含%s,%d,%c等格式化串时,printf就会去栈中找这个格式化串对应的变量,但实际上,根本没有向printf压入更多的参数,因此就会出现打印失败或者程序崩溃的现象。
在上一期中,F老师遇到了一个有意思的题目,在小T同学的帮助下得到了答案。 F老师把小T同学送走以后,思考了以下几个推广的问题: 1....如果机器人运行的轨道是环形的,环的周长步数为X,这种算法最坏情况下,两个机器人需要多少个周期才能相遇? 2....如图,机器人A和机器人B空降在一个环形离散轨道上,轨道的步数为X,两个机器人的距离为Y。 由于轨道为环形,从另一个方向看,两个机器人之间的距离是(X-Y)。...F老师由于治学不严谨,被小T同学嘲笑以后,把题目改了: 机器人A和机器人B空降在周长为X的环形轨道上,运行前文所述的程序,需要满足什么样的条件,机器人A和机器人B才可能相遇?...由于我们设定的条件是B发现了A的踪迹,才从进二退一的前进方式改为全速前进,也就是说,A追上B时,是没有走完整个环形轨道的。 因此,我们得到了结论: X > 3Y-1时,A可以追上B。
在上期中,F老师分析出了扩展题1的漏洞和答案。那么,我们再来看看扩展题2和3: 2....开放问题:我们把问题扩展到二维平面,并为机器人增加两条指令:up (向上走),down (向下走),在两个机器人无法通信的前提下,有没有办法让两个机器人相遇?...让我们在坐标轴上标出两个机器人可能空降的位置: 可见,这个问题我们可以转化为原问题,只需要规定机器人行走的路线—— 如图,机器人沿着橙色箭头走,其中,走过实线经过的点则执行mark指令记录坐标,而走过虚线经过的点则不记录坐标...我们发现,由于我们可以将机器人的路径从二维转换为一维,问题是有解的。 再让我们回到问题2。...问题2的不可解原因是,X和Y坐标完全随机,路径是无法从二维转换为一维的——因此无法编制程序,让两个机器人运行相同的程序还可以相遇。 那么,问题3的程序,你们知道怎么写了吗?
这是一道来自LintCode的题目,题目原文是这样的: LeetCode对应的题号是215。...,我这里是选择了数组中间的数字作为基准(省事一点)。...例如数组是6 1 2 7 9 3 4 5 10 8, 我们从两端开始探测: 那两个小人就是当前在操作的数字,首先左边的小人会向右走,同时将自己脚下面的数字和基准数字进行比较,因为我们排列的目的是让数字升序排列...,即最终结果为1 2 3 ... 10,所以左侧小人探测的目标是比基准数字大的数字。...---- 注意我的程序中的判断条件,我的目的是在碰面之后再让左右的“小人”继续走一步,然后直接依据两个小人的位置将数组进行分割。
心想暗笑,这问题难不倒我的,哈哈。 但组长只是微微一笑,继续问到:你知道在建立 Socket 连接的最开始1 秒,客户端发送了多大的数据吗? 小陈听后,瞬间一脸懵逼, 久久说不出话来。...面向 Socket 编程,是对 TCP/IP 协议的封装和应用。建立 TCP 连接是三次握手, 那么整个 TCP 连接建立过程,客户端只两次向服务器发送的数据包。这两个数据包的总大小应该是大小了。...怎么才能获取这两个数据库的大小呢? 突然他想到用抓包的方式。 他用启动 Wireshark 来抓包,以下是他捕获一个完整 TCP 连接的图。...第三次握手详细信息图如下: 因此,第三次是发送的数据包大小是 20 字节。 综上所述:在建立 Socket 连接的最开始1 秒,客户端一共发送了 32 + 20 = 52字节。...以上故事纯属虚构,但是内容是真实的。是自己研究 TCP 协议中,在阅读《TCP/IP详解卷1:协议》的过程中,还是云里雾里的。所以通过抓包的方式来加深理解。如果说错的地方,请帮忙指出,另外轻喷。
一、前言 前几天在Python白银交流群【Flipped】问了一道Python基础问题,如下图所示。 这个题目对于初学者来说,还是很有迷惑性的,一下子都看不出来啥问题!...主要是B和C选项,还是有点难度的。 D选项的话,判断是否小写,很明显,首字母是大写的,不满足要求。 三、总结 大家好,我是皮皮。...这篇文章主要盘点了一道基础的Python题目,文中针对该问题给出了具体的解析,帮助粉丝顺利解决了问题。
如果在一维整数数轴上,随机空降两个机器人,并且固化了相同的由这四条指令构成的程序,那么,如何编写这个程序,使得两个机器人能够相遇?...F老师正准备回答小T,顺便跟妹子炫耀一下自己学过的“阿喀琉斯永远追不上乌龟”的“芝诺悖论之追龟辩”,突然,大脑中一道灵光闪过—— 如果机器人P看见机器人Q的标记时,加速追赶呢?...虽然机器人没有加速追赶的指令,但如果让前面的机器人减速走呢? F老师想到了爷爷讲过的故事—— 在淮海战役中,解放军某部奉命追击国民党军黄维兵团。...这样,被追击者执行以下循环: 走两步 回退一步 做标记 由于被追击的机器人不可能发现追击者的标记,它会一直执行这个循环。...F老师痛定思痛,决定把这道题做改造: 如果机器人运行的轨道是环形的,环的周长步数为X,这种算法最坏情况下,两个机器人需要多少个周期才能相遇?
这是2008年阿里巴巴前端开发工程师一道布局题。 ? 现在的要求是C必须先于A、B节点之前,如何实现?...我的解答: <!...node && node.nodeType == 1) { return node; } } return null; }, /** * 判断指定的节点是否是第二个节点的祖先
一、前言 前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python列表的问题,这里拿出来给大家分享下,一起学习下。...List)却是8,len(List)-1就是7了,不会进入到该循环,所以不会有打印 print(List[i] + List[2]) 别走,这个题目还有变形,且看【Chloe】发来的另外一个题目...上周的时候,也确实发过列表这个坑的文章,具体的细节可以前往文章查看:盘点Python列表在删除时候的一个坑。这里给代码加了点注释,理解起来应该就不难了。...7了,而List[len(List) - 1]=List[7],对应的值是9 print(f"此时的List[len(List) - 1]是{List[len(List) - 1]},此时的...这篇文章主要分享了Python列表中的增加问题,每次循环会检查List,针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。
题图 From 花瓣网 By Clm 前不久在网上看到这样一道面试题目,题面是这样的: 有一个数组,如果有3个值:[3,2,6]。...原题目要求是用java来实现,这里我给换成了javascript,语言其实无关紧要,就像leetcode的题目,主要是看思维方式。 代码如下: ?...大体的思路是: 1、大循环套小循环,大循环根据数组的程度进行循环,每循环一次,将数组的第一项剔除。...其实这个题目还有很多变式,比如将需求改为,从数组中随机选择两个值能有多少种组合,随机选择三个呢?...大家可以思考一下,这些小的思考对编程思维的形成很有帮助,笔者也是很乐于写写这方面的文章,大家有什么好的题目可以分享出来,欢迎大家留言。
看到了一些interesting的题,和大家分享一下,如果大家有什么额外的见解欢迎大家公众号后台留言! 题目: 画出可以检测10010串的状态图 这类题一般有两种做法,状态机和移位寄存器。
今日分享一个关于栈和队列经典题目,笔者在秋招过程中笔试考过多次。...题目: 设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5、e6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出队的序列是e2、e4、e3、e6、e5、e1,则栈S的容量至少应该是?...解答: 出队先出e2表示e1,e2进栈后出e2(这时栈的容量最大为2),接着出e4,e3表示e3,e4进栈后出e4,e3(这时栈的容量最大为3),再出e6,e5表示e5,e6进栈后出e6,e5(这时栈的容量最大为...3),最后出e1,所以答案应该是 3 这里考察的知识点就是:栈(stack)是先入后出,后入先出,删除与加入均在栈顶操作。...如果喜欢我的文章,欢迎关注、点赞和转发,下面可以留言~~~
URL中发送 4.index.php脚本如何访问表单元素email的值?...9.当把一个有两个同名元素的表单提交给PHP脚本时会发生什么?...A.它们组成一个数组,存储在超级全局变量数组中 B.第二个元素的值加上第一个元素的值后,存储在超级全局变量数组中 C.第二个元素将覆盖第一个元素 D.第二个元素将自动被重命名 E.PHP输出一个警告...9.对于收到的查询字串和POST信息,PHP只是简单的把元素添加进对应的超级变量数组中。结果就是如果有两个元素同名,前一个会被后一个覆盖。答案是C。 10.只有B永远正确。...默认情况下,PHP把所有会话信息存储在/tmp文件夹中;在没有这个文件夹的操作系统中(比如Windows),必须在php.ini中给session.save_path设置一个合适的位置(如c:\Temp
看到了一些interesting的题,和大家分享一下,如果大家有什么额外的见解欢迎大家公众号后台留言! 题目: 修改下面的电路,使其功耗最小,同时保持功能不变 ?...怎么做暂且不讲,老样子,容我先念叨一下这类题的原理!...首先要明确的是: 在同步数据电路设计中,降低动态功耗最有效以及使用最广的技术是在默写指定区域数据流的特定阶段在不需要时钟处于活动状态时禁止时钟活动,因为FPGA的功耗大多数是与系统时钟的翻转有关,所以临时性的停止系统设计中某些处于非活动区域的时钟往往是最小化这类功耗最直接的方法...怎么做: 本案例中,在EN==1时,D触发器的输出是一个翻转信号,在EN==0时,D触发器的输出进行保持,所以使用门控时钟使能的方式: 代码: module gh( input D, input EN,
领取专属 10元无门槛券
手把手带您无忧上云