看网友的一道腾讯面试题有感

转载 2012年03月26日 10:04:07
10000+个数字钟找出top100
Java代码 复制代码 收藏代码
  1. import java.util.Arrays;   
  2. import java.util.Random;   
  3.   
  4. public class Top100 {   
  5.     private static Node head = null;   
  6.     private static Node end = null;   
  7.     private static Node tempNode = null;   
  8.     private static Node node = null;   
  9.   
  10.     public static int[] getTop100(int[] inputArray) {   
  11.   
  12.         int result[] = new int[100];   
  13.         int k = 100;   
  14.         if (inputArray.length < 100) {   
  15.             k = inputArray.length;   
  16.         }   
  17.         for (int i = 0; i < 100; ++i) {   
  18.             result[i] = inputArray[i];   
  19.         }   
  20.   
  21.         Arrays.sort(result);   
  22.   
  23.         for (int i = k - 1; i >= 0; i--) {   
  24.             node = new Node(result[i], tempNode);   
  25.             if (i == k - 1) {   
  26.                 head = node;   
  27.             } else {   
  28.                 tempNode.right = node;   
  29.             }   
  30.             if (i == 0) {   
  31.                 end = node;   
  32.             }else{   
  33.                 tempNode = node;   
  34.             }   
  35.         }   
  36.         tempNode = end ;   
  37.            
  38.            
  39.         for (int i = 100; i < inputArray.length; i++) {   
  40.             int tempValue = inputArray[i];   
  41.             if (tempValue <= end.value) {   
  42.                 continue;   
  43.             }else{   
  44.                 tempNode = end;   
  45.                 setValue(inputArray[i]) ;   
  46.             }   
  47.         }   
  48.   
  49.         for (int i = 0; i < 100; i++) {   
  50.             if (i == 0) {   
  51.                 node = head;   
  52.             } else {   
  53.                 node = node.right;   
  54.             }   
  55.             result[i] = node.value;   
  56.         }   
  57.   
  58.         return result;   
  59.   
  60.     }   
  61.   
  62.     private static void setValue(int tempValue) {   
  63.         if (tempNode.value < tempValue) {   
  64.             tempNode = tempNode.left;   
  65.             //最大的   
  66.             if(tempNode==null){   
  67.                 node = new Node(head,tempValue );   
  68.                 head.left = node ;   
  69.                 head = node ;   
  70.                 removeEnd() ;   
  71.             }else{   
  72.                 setValue(tempValue);   
  73.             }   
  74.         } else if (tempNode.value != tempValue) {   
  75.             node = new Node(tempValue, tempNode);   
  76.             //要替代end   
  77.             if(tempNode.right==end){   
  78.                 end.left.right = node ;   
  79.                 end = node ;   
  80.             }else{   
  81.                 try {   
  82.                     tempNode.right.left = node;   
  83.                 } catch (Exception e) {   
  84.                     // TODO Auto-generated catch block   
  85.                     System.err.println(tempNode.right) ;   
  86.                     e.printStackTrace() ;   
  87.                     System.exit(0) ;   
  88.                 }   
  89.                 tempNode.right = node;   
  90.                 removeEnd() ;   
  91.             }   
  92.         }   
  93.     }   
  94.        
  95.     private static void removeEnd(){   
  96.         end = end.left ;   
  97.         end.right = null ;   
  98.     }   
  99.   
  100.     public static void main(String[] args) {   
  101.   
  102.         int numberCount = 1000000;   
  103.   
  104.         int maxNumber = numberCount;   
  105.   
  106.         int inputArray[] = new int[numberCount];   
  107.   
  108.         Random random = new Random();   
  109.   
  110.         for (int i = 0; i < numberCount; ++i) {   
  111.   
  112.             inputArray[i] = Math.abs(random.nextInt(maxNumber));   
  113.   
  114.         }   
  115.   
  116.         System.out.println("Sort begin...");   
  117.   
  118.         long current = System.currentTimeMillis();   
  119.   
  120.         int[] result = Top100.getTop100(inputArray);   
  121.   
  122.         System.out.println(System.currentTimeMillis() - current + "ms");   
  123.   
  124.         for (int i = 0; i < result.length; ++i) {   
  125.   
  126.             System.out.print(i + "." + result[i] + ",");   
  127.   
  128.         }   
  129.   
  130.     }   
  131.   
  132. }   
  133.   
  134. class Node {   
  135.     protected int value;   
  136.     protected Node left;   
  137.     protected Node right;   
  138.   
  139.     public Node(int value) {   
  140.         this.value = value;   
  141.     }   
  142.   
  143.     public Node(int value, Node left) {   
  144.         this.value = value;   
  145.         this.left = left;   
  146.     }   
  147.   
  148.     public Node(Node right, int value) {   
  149.         this.right = right;   
  150.         this.value = value;   
  151.     }   

JVM 加载 class 文件的原理机制(类的生命周期、类加载器)

类的加载、连接与初始化、卸载、类加载器等

十一、轻松搭建网站管理后台

互联网上见到的多数网站都有一个你看不见的更强大的管理后台支持,比如一个新闻网站的管理后台一定有新闻编辑、发布、审核、管理等,一个论坛网站的管理后台一定有用户管理、板块管理、帖子审核等。这一节我们见识一...

腾讯高级工程师:一道面试题引发的高并发性能调试思考

4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?(知乎原贴地址如下:https://www.zhihu...

那天在CSDN上看到一个网友在华为遇到的面试题是一道乘法题看似简其实并不是因为它们都超出了数据类型的范围,今天做了下加法希望对大家有所启示

bool jw = false;//两个数加起来是否要向前进一位     string result = "";//最后呈现的结果     protected void Button1_Click...

由一道腾讯面试题引发的关于递归函数使用的各种情况总结

一直有一个感受就是,当我们在某些问题抽象的定义解答时候感到疑惑是,不妨看一下具体问题的解答,更加有助于我们理解问题。首先看一下腾讯的一道招聘的测试题。        1、面试题是一道程序编程题,要求...

一道腾讯面试题:英语单词拼写检查

方法一:p神根据编辑距离(1和2)的算法 import re, collections def words(text): return re.findall('[a-z]+', text....

腾讯高级工程师:一道面试题引发的高并发性能调试思考

4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?(知乎原贴地址如下:https://www.zhihu...

面试题(华为/中兴/腾讯)

  • 2009年08月18日 15:33
  • 25KB
  • 下载

腾讯实习生面试题--替换字符串中指定子串

第一次在面试中手写算法,果然异常紧张,当时表现应该很不好吧,按照第一反应飞快写出来了一个有错误的版本。。。晚上在实验室仔细琢磨了一下这道题,发现早上自己写的简直。。。啊,我要尴尬死了! 题目...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:看网友的一道腾讯面试题有感
举报原因:
原因补充:

(最多只允许输入30个字)