文档章节

IT公司100题-8-智力题

关西大汉弹琵琶
 关西大汉弹琵琶
发布于 2015/11/04 22:14
字数 971
阅读 390
收藏 14

问题1:

有两个房间,一间房里有三盏灯,另一间房有控制着三盏灯的三个开关,

这两个房间是分割开的,从一间里不能看到另一间的情况。

现在要求受训者分别进这两房间一次,然后判断出这三盏灯分别是由哪个开关控制的。

有什么办法呢?

分析:

灯泡和开关的问题。三个灯泡、三个开关,要在灯泡和开关之间建立对应关系。使用一条准则,一个灯泡可以关联一个开关。再使用一条准则,又一个灯泡可以再关联一个开关。那么,最后剩下的灯泡就必然和剩下的开关对应。因此,只要找到两条判断的依据即可。依据1:当前灯泡的亮灭。依据2:亮过的灯泡会发热。 


1.先走进有开关的房间,将三个开关编号为a b c。
2.将开关a 打开5分钟,然后关闭,然后打开b

问题2:

你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。

如果你只能将金条切割两次,你怎样分给这些工人?

分析:
1+2+4;

两刀分金条。共7天,每天给1/7。

第一天从金条上切1/7支付给工人。

第二天从金条上切2/7,这时剩下4/7。支付2/7给工人,收回1/7。

第三天将收回的1/7支付给工人

第四天将4/7支付给工人,并将1/7、2/7收回

...

问题3:

       ★用一种算法来颠倒一个链接表的顺序。现在不用递归式的情况下做一遍。

class LinkedListIT8{
   static class Node{
      int data;
      Node next;
      Node(int x, Node n){
         data = x;
         next = n;
      }
   }

   private Node head;
   private Node tail;
   private int theSize;

   LinkedListIT8(){
      head = new Node(-1, null);
      tail = new Node(-1, null);
      head.next = tail;
      theSize = 0;
   }

   public int size(){
      return theSize;
   }

   public void add(int x){
      addAfter(getNode(size()), x);
   }

   private void addAfter(Node p, int x){
      Node newNode = new Node(x, p);
      newNode.next = p.next;
      p.next = newNode;
      theSize++;
   }

   private Node getNode(int idx){
      Node p = head;
      for (int i = 0; i < idx; i++)
         p=p.next;
      return p;
   }

   public void printList(){
      Node p = head.next;
      for (int i = 0; i < size(); i++) {
         System.out.print(p.data + " ");
         p = p.next;
      }
   }

   public void reverse(){
      //reverseR(head);
      reverseNR(head);
   }

   private Node reverseR(Node currentNode){
       if(currentNode == tail) {
          Node phead = head;
          head = currentNode;
          tail = phead;
       } else {
          reverseR(currentNode.next).next = currentNode;
       }
    
       return currentNode;
    }

   private void reverseNR(Node phead){
      Node pre = head;
      Node cur = head.next;
      Node np;

      while(cur != tail){
         np = cur.next;
         cur.next = pre;
         pre = cur;
         cur = np;
      }

      head = cur;
      cur.next = pre;

      tail = phead;
      tail.next = null;
   }
}
public class IT8 {
   public static void main(String[] args) {
      LinkedListIT8 ll = new LinkedListIT8();
      ll.add(0);ll.add(1);ll.add(2);ll.add(3);
      ll.add(4);ll.add(5);ll.add(6);ll.add(7);
      ll.printList();
      ll.reverse();
      System.out.println("\n***************");
      ll.printList();
   }
}

  ★用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。
  ★用一种算法整理一个数组。你为什么选择这种方法?
  ★用一种算法使通用字符串相匹配。
  ★颠倒一个字符串。优化速度。优化空间。
  ★颠倒一个句子中的词的顺序,比如将“我叫克丽丝”转换为“克丽丝叫我”,

实现速度最快,移动最少。
  ★找到一个子字符串。优化速度。优化空间。
  ★比较两个字符串,用O(n)时间和恒量空间。
  ★假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗?
  ★不用乘法或加法增加8倍。现在用同样的方法增加7倍。 


© 著作权归作者所有

关西大汉弹琵琶
粉丝 8
博文 41
码字总数 14221
作品 0
浦东
程序员
私信 提问
加载中

评论(2)

关西大汉弹琵琶
关西大汉弹琵琶 博主

引用来自“Erroooooor”的评论

灯泡发热是脑筋急转弯的思路
Erroooooor
Erroooooor
灯泡发热是脑筋急转弯的思路
发表下今天的面试经历

楼主目前在职,现在这家公司去年7月份入职,工作主要做一些后台数据统计,网站维护,工作我自己感觉还算用心吧,基本上面分配的任务都用心去做好,不懂的也会及时和人沟通。 前几天在某网站投...

牛腩
2014/05/07
3.8K
21
我讨厌智力题:我还是个程序员吗?

本文是从 I Hate Puzzles: Am I Still A Programmer? 这篇文章翻译而来。 大概是一两个月前,朋友送了我和老婆一份礼物:一个有1000个小拼块的拼图版,拼的是艾歇尔名作: 昨天我们决定试一试...

红薯
2011/03/17
1K
20
公司口头offer给了,又扯走流程,弄了几天,又说再考虑下

本人java从事4年,深圳,大专学历。之前因为一些原因离职,之前从事sp(增值业务),手游后端,智能家居后端工作,在俩家公司都算的上核心开发者,当然,我们公司团队也不大,前段时间因一些...

fxuantiue0400
2015/11/12
13.7K
16
总结下最近的面试情况

由于去年基本没有准备就面试了两马公司,浪费了机会导致今年不能面试,建议想去两马的,好好准备下再面,别浪费机会! 下面是面过的公司: 平安科技,这家最坑爹,前后搞的我去了好几次,流程...

andersonoy
2016/08/23
3.6K
13
轻松搞定java高薪

找到一份高薪的java工作,从程序员走向高级程序员、架构师、分析员,是所有java程序员们的追求。 找一份好工作,自然要看工作经历、项目积累、综合能力。但是,在繁忙、琐碎的日常工作之余,...

solar.xie
2016/01/20
294
0

没有更多内容

加载失败,请刷新页面

加载更多

家庭作业——苗钰婷

2 编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that! #include<stdio.h>int main(){......

OSC_Okruuv
4分钟前
0
0
经典系统设计面试题解析:如何设计TinyURL(一)

原文链接: https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
5分钟前
0
0
2.面向对象设计原则(7条)

开闭原则 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。 实现方法 可以通过“抽象约束、封装变化”来实...

Eappo_Geng
8分钟前
0
0
8086汇编基础 debug P命令 一步完成loop循环

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
12分钟前
1
0
使用nodeJS实现前端项目自动化之项目构建和文件合并

本文转载于:专业的前端网站➜使用nodeJS实现前端项目自动化之项目构建和文件合并 前面的话   一般地,我们使用构建工具来完成项目的自动化操作。本文主要介绍如何使用nodeJS来实现简单的项...

前端老手
25分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部