小米面试题:一副从1到n的牌
题目:一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手上没牌,最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组。
前段时间在知乎上看到貌似很火的小米面试题,也看到了微软大神给的思路,但是可能是能力不够发现看不懂于是乎自己试着写了写
先说一下思路
- 既然每次都是先取一张放到桌子上,然后再一张放到牌堆底。也就是编号为奇数的放到桌子上,编号为偶数的放到牌堆底。
- 通过判断放到牌堆底的个数为奇数的话证明n为偶数,再一次的话就应该直接放到桌子上;为偶数的数证明n为奇数,再一次的话应该先放到牌堆底然后再放到桌子上。
开始写代码
/*** @param intList* 原来的手牌 1~n的排序* @param intTampList* 放到最后的牌* @param list* 放到桌子上的牌* @param isfirst* 判断是不是第一次 原因是第一次不需要考虑第一张是不是放到桌子上还是放到最后面** @author 庾雍*/public static List aaa(List intList, List intTampList, List list,boolean isfirst) {if (isfirst) {for (int i = 1; i <= intList.size(); i++) {if (i % 2 != 0)list.add(intList.get(i - 1));elseintTampList.add(intList.get(i - 1));}} else {// 需要考虑inttamplist的个数为奇数还是偶数
//奇数则证明n的个数为偶数不需要先放到inttamplist中反之则应该先放进去if (intList.size() % 2 != 0) {for (int i = 1; i <= intList.size(); i++) {if (i % 2 != 0)list.add(intList.get(i - 1));elseintTampList.add(intList.get(i - 1));}} else {// 先放到intTampList中intTampList.add(intList.get(0));for (int i = 2; i <= intList.size(); i++) {if (i % 2 == 0)list.add(intList.get(i - 1));elseintTampList.add(intList.get(i - 1));}}}if (intTampList.size() > 0) {aaa(intTampList, new ArrayList(), list, false);}return list;}public static void main(String[] args) {List list = new ArrayList();List intList = new ArrayList();intList.add(1);intList.add(2);intList.add(3);intList.add(4);intList.add(5);intList.add(6);intList.add(7);intList.add(8);intList.add(9);List aaa = aaa(intList, new ArrayList(), list, true);System.out.println(aaa);}
输出的结果为:
大体就是这样,如果有大神提出更简单的算法请给小弟留言
小米面试题:一副从1到n的牌相关推荐
- 小米面试题:手机分身,电话号码隐藏。
小米面试题: 手机分身,电话号码隐藏. 0-9分别对应ZERO,ONE,TWO,...,NINE 为保证手机拨号安全性,拨号后,存为对应的字符串,并打乱顺序,保证安全性. 现在给定一个字符串,求最小的 ...
- 面试题:一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌,最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组
面试题:一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌,最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组 思路如下:由题意可知存在两种操作,1.摸牌:2 ...
- 大数据学长面试-------小米面试题
小米面试题 学长1 大家可以投一下小米的推荐算法. 一面:问两个有序大数组合并成一个数组的最佳方法,还有快排,问了所有项目. 二面:是问推荐算法的业务实现,还有如果你自己做一个推荐,你会怎么选择模型. ...
- 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手里没有牌.最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组
研究一下这个面试题特此记录,题目:一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手里没有牌.最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组. 第一种:逆推一下 ...
- 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌,最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组
题目:一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手上没牌,最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组.(题目来源于一篇知乎上的文章) 思路: 在原牌堆 ...
- 面试题目: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌。根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组。
面试题目: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌.根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组. import java.util.LinkedList; i ...
- 小米面试题 嵌入式_说说最近一次失败的小米嵌入式面试经历
姑且把第一次面试叫一面,第二次面试叫二面吧. 第一次面试(周五) 面试官 1:一份比较基础的面试笔试题,然后比较笼统的问了问简历上的项目细节,部分细节追问.面试官年龄相仿,很随和.答笔试题的时候说,不 ...
- C语言:面试题-一副牌从A到K共13张,取牌的顺序是这样的:A、将第一张放到最下面。B、取出最上面的一张牌。。。。
代码如下: /************************************************************************** *功能:求解下面问题 *一副牌从A到 ...
- 转载的一道小米面试题和自己的写法
转载 的一道小米的面试题 写一个函数stringconcat, 要求能 var result1 = stringconcat("a", "b") result1 ...
最新文章
- Linux学习(四)---用户管理
- Mac 下anaconda安装mysqldb的方法
- 2.4带通采样的实际问题
- c语言复制粘贴源码,c语言函数memccpy()如何复制内存中的内容实例源码介绍
- 理解Node.js(译文)
- jzoj3054-祖孙询问【LCA】
- mysql cluster 外键_Mysql外键约束
- Informix IDS 11体系操持(918测验)认证指南,第 4 部门: 机能调优(1)
- php 中抽象类的作用,解释PHP中的抽象类。
- ITextSharp 使用
- 文本挖掘带你分析 “苏轼” 的一生!(附视频)
- 得到头条【四线城市宜宾,靠什么逆袭?】
- paip 破解网站手机验证码
- 装箱与拆箱(TDB)
- 随笔随想-2022-06-07
- 什么是单工通信、半双工通信、全双工通信?3种通信方式的区别是什么?
- 基于RC电路的DA14585测量NTC电阻阻值
- 递归中的引用传递和常引用传递
- JVM的Metaspace,JAVA8以前是Permanent Area
- 云计算的模型都有哪些
热门文章
- 被985博导称赞的保研考研复试导师推荐信长什么样子?
- 基于WIndow的MailServer和Foxmail搭建本地邮件服务器及实现本地邮箱账号收发邮件
- 论文笔记:nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation
- 2022年标准员-通用基础(标准员)考试题及在线模拟考试
- python开发工具总结
- 计算个人所得税的java代码
- IC设计——EDA软件篇——xcelium
- 交易猫不显示服务器,交易猫上号器一直显示检查游戏环境
- camunda 驳回 二 并行
- Java时区处理之Date,Calendar,TimeZone,SimpleDateFormat