前些天再网上看了很多网友再谈论一个很有意思的问题,有关算法的。然后小编追根溯源终于扎到了这篇帖子。说是有位网友在面试小米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_Java程序员3面小米,被俩算法题难倒,微软员工6分钟解决,真丢脸...相关推荐

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

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

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

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

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

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

  4. 程序员如何快速准备面试中的算法 - 结构之法

    准备面试.学习算法,特别推荐最新出版的我的新书<编程之法:面试和算法心得>,已经上架京东等各大网店 前言 我决定写篇短文,即为此文.之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作 ...

  5. 程序员如何快速准备面试中的算法

    程序员如何快速准备面试中的算法 准备面试.学习算法,特别推荐最新出版的 新书<编程之法:面试和算法心得>,已经上架 京东等各大网店 前言 我决定写篇短文,即为此文.之所以要写这篇文章,缘于 ...

  6. 好程序员web前端分享javascript枚举算法

    好程序员web前端分享javascript枚举算法,题目:在1,2,3,4,5 五个数中,我们随机选取 3个数.问有多少种取法?并且把每种取出数的方法列举出来. 乍看这道题,其实感觉没什么难度.三个f ...

  7. 程序员编程艺术:面试和算法心得

    本文转载至:http://taop.marchtea.com/ 本书是July和他伙伴们的<程序员编程艺术>的电子书 <程序员编程艺术:面试和算法心得> 目录 第一部分 数据结 ...

  8. 程序员在论坛里炫耀公司待遇,一线互联网公司员工直接晒出下午茶

    程序君个人微信和我聊聊编程和创业的事加好友 虽然现在人们的生活水平上来了,但是生活压力也越来越大,工作上的强度也越来越多,而且很多工作都是要讲究效率的,有一些比较人性化的单位,为了能够减轻员工的工作压 ...

  9. 2018年5月下旬值得一读的10本技术书籍(Python、程序员英语、区块链、算法等书籍)!福利见文末!

    5月下旬, 小编 为大家带来10本技术书籍(Python.程序员英语.区块链.算法等书籍).以下为书籍详情,文末还有福利哦! 书籍名称:<程序员的英语> 本书旨在最大限度提高对开发人员最重 ...

最新文章

  1. python 视频播放 拖动_视频画中画效果,拖动进度条可以seek到相应视频帧显示
  2. Java Day02-2(字符串)
  3. 自学python推荐书籍 知乎-在知乎上学 Python - 爬虫篇
  4. Spring MVC源码解析
  5. ios 持续获取定位 高德地图_概述-iOS 定位SDK | 高德地图API
  6. python集合例题_python练习题集合-2
  7. [转贴] 软件测试职业发展的 A 面和 B 面
  8. 函数遍历IOS中block的使用
  9. 【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)
  10. android 排序view,Android 中ViewPager重排序与更新实例详解
  11. 货币代码无法进行ALE通信
  12. android 自由落体,自由落体手游
  13. 厨神之路五--粥汤类
  14. maya 中的 cmds.scriptJob 命令
  15. EBS Form : 消息字典 fnd_message. (转)
  16. latex论文写作心得
  17. 张赐荣:计算机网络快速入门教程
  18. tabindex 属性 - HTML中代表使用Tab键的遍历顺序
  19. STM32自学笔记15-步进电机驱动项目-磁编码器MT6816驱动
  20. cocos2dx:重力加速度,自由落体:利用update()就能快速实现精灵自由落体运动

热门文章

  1. android studio 必备10款插件
  2. 想在Mac上使用CAD?
  3. java后端面试通过邮件范本,成功入职阿里
  4. 5G与智慧杆将擦出什么样的火花?
  5. 前端高级工程师04期 KKB
  6. 七大设计原则-单一职责原则
  7. Linux Shell重定向Linux管道
  8. 如何在Mac上的 iMovie 剪辑中添加音频效果?
  9. iOS音乐后台播放、锁屏封面及播放控制
  10. linux命令userdel,linux命令:userdel