前些天再网上看了很多网友再谈论一个很有意思的问题,有关算法的。然后小编追根溯源终于扎到了这篇帖子。说是有位网友在面试小米Java岗三次后,终于挺进了第三轮面试,结果还是败在了两道算法题上面。

1、写个读方法和写方法,实现读写锁

2、一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手机没牌,最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组

对于楼主所发的这个问题,网友们纷纷发表了自己的答案和看法。

有网友问道,是不是反着做一遍就行了。然后楼主把题目的意思又给他解释了一遍:“一副扑克牌中抽出13张从a到k然后把上面的一张抽出来放最低下,第二张是1拿出来摆桌上,再把最上面的一张抽出来放底下,第二张是2放桌上,以此类推把他们按照顺序都抽出来.怎么摆?”

这时就有为网友给出了自己的答案,第二个问题,第一步:从1开始循环到n递增num,第二部,在第一步的循环内,数组中从0到n-1循环,每次从数组中跳过一个空白位置,插入数字num。还说道,6,7有问题,要跳过一个空白位。至于怎么跳。就是arr[i]=0就跳过一次,跳过的次数局部变量记录下。但是楼主并没有回复他,貌似也是一脸懵逼的。

然后又蹦出来一名网友给出了一个不同的方法,第一遍从1开始步长为2,第二遍从2开始步长为4,第三遍从4开始步长为8,第m次从2的m-1次方开始,步长为2的m次方,m=(n+1)/2,直接出结果,模拟个蛋。这时,楼主也回复了他,觉得应该是正解。也有很多网友点赞,同时也表示是正解。

很显然,这应该是解决问题的一种方法。那我们还有没有其他方法解决呢?接着往下看。

这时,一位自称是微软的程序员发表了条评论。

“取一个1~n的数组,这里为了说明取n=5。按照题目中的规则变换,得到数组:[1 3 5 4 2],将该数组下标与值互换得到[1 5 2 4 3],即为答案。解释:[1 3 5 4 2]的意义是,经过变换,原数组中3号位置的数字现在2号槽,原数组中5号位置的数字现在3号槽... 现在已知变换后的槽存放的是1~n,故只需将下标与值互换即可得到待求数组。

这道题还可以继续扩展:

1.变换规则更复杂使得无法逆向模拟还原原数组;

2.最终得到的序列可以扩展为任意序列。请大家以后不要黑微软是养老院了”

但是楼主貌似没理解全,问道你这些数字是数组的下标吗

后面这位微软的程序员也补充了一下,[]括起来的所有元素都是实际的数字(题目中牌上的数字)。下标从1开始

小编看了下,63个赞稳坐第一,评论也有很多人都表示佩服,不愧是微软的程序员呀!

有人调了半小时才搞定这道题,思路是跟前面的微软大佬学的,确实这道题单纯逆向可解,但逆向确实有局限性,如果碰到难逆向的题就瞎了,多学一点思路,受教了。

不过有位网友表示,我一文科毕业的看大佬们回答好像看天书。

哈哈哈...

对于上面网友们的看法和答案。大家有什么想要表达的呢?欢迎再下方评论区吐槽!

转:点击打开链接

Java程序员3面小米,被俩算法题难倒,微软员工6分钟解决,真丢脸相关推荐

  1. 程序员面试需要刷力扣算法题吗

    这里写目录标题 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一些特征 1.2. 为什么要考查算法 1.3. 目前面试主要考查 3 类 1. 程序员面试需要刷力扣算法题吗 1.1. 算法题的一 ...

  2. 前端程序员大厂面试精选100道算法题2

    碎碎念: 亲爱的读者:你好!我的名字叫昌龙 [Changlon] -- 一个非科班程序员.一个致力于前端的开发者.一个热爱生活且又时有忧郁的思考者. 如果我的文章能给你带来一些收获,你的点赞收藏将是对 ...

  3. Java程序员面试笔试宝典-数据结构与算法(四)

    本文内容基于<Java程序员面试笔试宝典>,何昊.薛鹏.叶向阳著. 1. 链表 1.1 如何实现单链表的增删操作? 1.2 如何从链表中删除重复元素? 1.3 如何找出单链表中的倒数第k个 ...

  4. 为什么微软不承认java_Java程序员3面小米,被俩算法题难倒,微软员工6分钟解决,真丢脸...

    前些天再网上看了很多网友再谈论一个很有意思的问题,有关算法的.然后小编追根溯源终于扎到了这篇帖子.说是有位网友在面试小米Java岗三次后,终于挺进了第三轮面试,结果还是败在了两道算法题上面. 1.写个 ...

  5. Java程序员从笨鸟到菜鸟全部博客目录

    本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.NET/csh624366188 欢迎关注微信账号:java那些事:csh624366188.每天一篇java相关的文章 大 ...

  6. JAVA程序员从菜鸟到菜鸟

    CSDN十大风云博客专栏评选结果公布!            下载频道分享季1:分享经典,领取积分!           CSDN博客皮肤评选活动火爆开启! [置顶] Java程序员从笨鸟到菜鸟之(序 ...

  7. Java程序员由笨鸟到菜鸟 电子版书正式发布 欢迎大家下载

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 欢迎关注 ...

  8. 掌柜大作战(10):人脸识别和图像识别,Java程序员的宿命

    在上一篇,写了点思考,专业化分工,尤其是在大公司,每个人做的事情,可能会比较'专'. 比如,有的团队负责消息中间JMQ和分布式服务框架JSF的研发和升级,业务研发团队直接使用他们的组件,简单配置一下, ...

  9. 做什么职业,也别做程序员,尤其是java程序员(转载)

    千万别做程序员,尤其别做Java这种门槛低,入门快的程序员(别跟我说Java搞精通了也很牛之类的,原因不解释,做5年以上就知道了),程序员本来就是我见过最坑爹的职业了...Java程序员更是,现在满地 ...

最新文章

  1. Asp.net MVC 3 防止 Cross-Site Request Forgery (CSRF)原理及扩展 安全 注入
  2. JHStatusTextView
  3. 四十三、Linux磁盘管理和Shell编程
  4. Java并发编程—无锁互斥机制及CAS原理
  5. 【牛客 - 181F】子序列(容斥,组合数,费马小定理)
  6. mysql 主从 跳过_mysql主从同步如何跳过错误
  7. Mysql学习总结(67)——MYSQL慢查询日志
  8. MySQL进阶之SQL优化
  9. oracle查询耗资源的进程,常用Oracle进程资源查询语句(运维必看)
  10. 五步构建经营指标,拒绝分析不接地气
  11. openwrt1907使用mt7621+mt715 5G wifi吞吐量低问题解决方法
  12. 通信时代的发展与5G未来的发展方向以及面临的业务挑战
  13. 获取MP4视频关键帧图像,并保存为JPEG格式文件
  14. 如何进行网站流量分析(二)
  15. js 防止网络慢时 表单重复提交问题
  16. 数字后端物理设计输入文件介绍(.v .sdc .lib/.db .lef .tlef/.tf rc corner .view)
  17. ONLYOFFICE的表单复杂字段开发详解
  18. 倾情奉献:我的公众号矩阵之路
  19. 清除微信公众号缓存方法(安卓手机+苹果手机)
  20. Linux——文件的权限管理、acl列表、特殊权限位、练习2

热门文章

  1. Linux下的一个图形管理工具webmin
  2. SQL中的Where,Group By,Order By和Having的用法/区别
  3. Zencart获取PayPal PDT Token参数教程方法
  4. 相对熵/KL散度(Kullback–Leibler divergence,KLD)
  5. 自己拿项目,软件设计开发,释放你的力量
  6. 批处理中的****1nul 2nul
  7. Day9-Postfix
  8. 查看服务器配置信息prtdiag与systeminfo实用命令
  9. AJAX初探,XMLHttpRequest介绍
  10. 昨天又帮爸DIY了一台工作电脑