面试题: 逻辑思维题 (????)
1,你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。 如果你只能将金条切割两次,你怎样分给这些工人?
,
解答:
把金条分成三段(就是分两次,或者切两刀),分别是整根金条的1/7、2/7 4/7
第一天:给1/7的,
第二天:给2/7的,收回1/7的
第三天,给1/7的
第四天:给4/7的,收回1/7和2/7的
第五天:给1/7的
第六天:给2/7的,收回1/7的
第七天:给1/7的
2, 有两间房,一间房里有三盏灯,另一间房有控制这三盏灯的开关(这两间房是分割开的,毫无联系).现在要你分别进这两间房一次,然后判断出这三盏分别是由哪个开关控制,你能想出办法吗?(注意:每间房只能进一次)
解答:
由于工作时间长的灯泡的温度高,工作时间短的温度低,故可以先走进有开关的房间,将三个开关编号为A、B和C,将开关A打开10分钟,然后关闭A;再打开B,然后马上走到有灯的房间,此房间内正在亮着的等由开关B控制;用手去摸一摸另外两盏灯,发热的由开关A控制,凉的由开关C控制.
3. ★用一种算法来颠倒一个链接表的顺序。现在在不用递归式的情况下做一遍。
★用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。
★用一种算法整理一个数组。你为什么选择这种方法?
★用一种算法使通用字符串相匹配。
★颠倒一个字符串。优化速度。优化空间。
★颠倒一个句子中的词的顺序,比如将“我叫克丽丝”转换为“克丽丝叫我”,
实现速度最快,移动最少。
★找到一个子字符串。优化速度。优化空间。
★比较两个字符串,用O(n)时间和恒量空间。
★假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现 两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不 用这种方式的算法吗?
★不用乘法或加法增加8倍。现在用同样的方法增加7倍。
解答: 都没有理解 (??????)
posted on 2018-05-16 08:43 William_Dai 阅读(2611) 评论(0) 编辑 收藏 举报