`
ansjsun
  • 浏览: 203097 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
10000+个数字钟找出top100

import java.util.Arrays;
import java.util.Random;

public class Top100 {
	private static Node head = null;
	private static Node end = null;
	private static Node tempNode = null;
	private static Node node = null;

	public static int[] getTop100(int[] inputArray) {

		int result[] = new int[100];
		int k = 100;
		if (inputArray.length < 100) {
			k = inputArray.length;
		}
		for (int i = 0; i < 100; ++i) {
			result[i] = inputArray[i];
		}

		Arrays.sort(result);

		for (int i = k - 1; i >= 0; i--) {
			node = new Node(result[i], tempNode);
			if (i == k - 1) {
				head = node;
			} else {
				tempNode.right = node;
			}
			if (i == 0) {
				end = node;
			}else{
				tempNode = node;
			}
		}
		tempNode = end ;
		
		
		for (int i = 100; i < inputArray.length; i++) {
			int tempValue = inputArray[i];
			if (tempValue <= end.value) {
				continue;
			}else{
				tempNode = end;
				setValue(inputArray[i]) ;
			}
		}

		for (int i = 0; i < 100; i++) {
			if (i == 0) {
				node = head;
			} else {
				node = node.right;
			}
			result[i] = node.value;
		}

		return result;

	}

	private static void setValue(int tempValue) {
		if (tempNode.value < tempValue) {
			tempNode = tempNode.left;
			//最大的
			if(tempNode==null){
				node = new Node(head,tempValue );
				head.left = node ;
				head = node ;
				removeEnd() ;
			}else{
				setValue(tempValue);
			}
		} else if (tempNode.value != tempValue) {
			node = new Node(tempValue, tempNode);
			//要替代end
			if(tempNode.right==end){
				end.left.right = node ;
				end = node ;
			}else{
				try {
					tempNode.right.left = node;
				} catch (Exception e) {
					// TODO Auto-generated catch block
					System.err.println(tempNode.right) ;
					e.printStackTrace() ;
					System.exit(0) ;
				}
				tempNode.right = node;
				removeEnd() ;
			}
		}
	}
	
	private static void removeEnd(){
		end = end.left ;
		end.right = null ;
	}

	public static void main(String[] args) {

		int numberCount = 1000000;

		int maxNumber = numberCount;

		int inputArray[] = new int[numberCount];

		Random random = new Random();

		for (int i = 0; i < numberCount; ++i) {

			inputArray[i] = Math.abs(random.nextInt(maxNumber));

		}

		System.out.println("Sort begin...");

		long current = System.currentTimeMillis();

		int[] result = Top100.getTop100(inputArray);

		System.out.println(System.currentTimeMillis() - current + "ms");

		for (int i = 0; i < result.length; ++i) {

			System.out.print(i + "." + result[i] + ",");

		}

	}

}

class Node {
	protected int value;
	protected Node left;
	protected Node right;

	public Node(int value) {
		this.value = value;
	}

	public Node(int value, Node left) {
		this.value = value;
		this.left = left;
	}

	public Node(Node right, int value) {
		this.right = right;
		this.value = value;
	}
}

分享到:
评论
4 楼 chujiazhen 2011-09-13  
在ali也被问到了这道题
3 楼 ansjsun 2011-08-19  
bmqnc 写道
哥们,我把你的代码直接copy运行,报了错误啊:
Sort begin...
null
java.lang.NullPointerException
	at Top100.setValue(Top100.java:82)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.getTop100(Top100.java:45)
	at Top100.main(Top100.java:120)


我日我终于看到这个代码了....原来我做过的啊..当初偷懒没有做完..今天有人问我呢..我回答的竟然人家不满意哎...
2 楼 bmqnc 2010-10-13  
另外,弱弱的说一句,我感觉你的代码有点乱,也没讲讲思路 啊。。。。
1 楼 bmqnc 2010-10-13  
哥们,我把你的代码直接copy运行,报了错误啊:
Sort begin...
null
java.lang.NullPointerException
	at Top100.setValue(Top100.java:82)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.setValue(Top100.java:72)
	at Top100.getTop100(Top100.java:45)
	at Top100.main(Top100.java:120)

相关推荐

    有感JAVA面试题及答案

    面试题包括Java基础方面、Jsp方面、Servlet方面、Jdbc、Jdo方面、Xml方面、EJB方面、J2EE MVC方面、设计模式方面、JavaScript方面、CORBA方面、LINUX方面,非常齐全的面试题,都有答案。是找工作的必备品。

    shell面试大全,面试有感

    "shell面试大全,面试有感"这一主题涵盖了从基础到高级的Shell面试知识点,旨在帮助求职者全面准备相关面试。 首先,我们需要理解Shell的基础概念。Shell是用户与操作系统内核之间的接口,它提供了一个命令行环境,...

    “读”2021浙江省英语高考试题有感讲稿.docx

    - **典型例子**:单选题第8题、第16题涉及表语从句和宾语从句等复杂句式的运用。这些题目要求考生不仅理解基本语法结构,还要能准确判断并运用到具体的语言环境中。 **改进意见**:在教授复杂句式时,教师应该提供...

    读《腾讯传》有感1500字.doc

    《腾讯传》是一本深入剖析中国互联网巨头腾讯发展历程的书籍,从中我们可以汲取许多关于创业、产品设计和企业管理的宝贵经验。 首先,书中强调了产品设计的核心在于满足客户需求。一款成功的产品,应当能够精准地...

    java面试题应聘Java笔试

    前段时间因为要参加一个笔试,在准备期间在网上找到了两条关于笔试题目的文章,其中一篇为有感:应聘Java笔试时可能出现问题&gt;&gt;,还有一篇忘了名字,读后深受启发。 在寻找这些答案的过程中,我将相关答案记录下来,...

    面试会计师事务所合伙人有感.doc

    面试会计师事务所合伙人有感.doc

    5古诗两首题西林壁观书有感.ppt

    《题西林壁》与《观书有感》这两首古诗都是宋代文人创作的名篇,分别由苏轼和朱熹所作。这两首诗虽然表面上描绘的是自然景色,但都寓含了深刻的哲理,对于读者来说,不仅能够欣赏到优美的诗词艺术,更能从中汲取人生...

    看《中国好声音》有感.docx

    看《中国好声音》有感.docx

    读落花生有感600字.doc

    读落花生有感600字.doc

    观“人机大战”有感.

    观“人机大战”有感. 观“人机大战”有感. 观“人机大战”有感.

    看《大象传奇》-有感作文.doc

    看《大象传奇》-有感作文.doc

    读后感300字-朱熹观书有感.docx

    - **《观书有感》**:朱熹所著的一首诗歌,反映了他对读书的独特感悟。 ### 2. 诗歌内容解析 - **第一句**:“半亩方塘一鉴开”——通过比喻手法,将读书的心境比作清澈的水塘,形象地表达了读书给人带来的清澈...

    有感无感资料1.zip

    从压缩包子文件的文件名称“有感和无感资料合集01”来看,这个文件可能是一个系列的第一部分,包含了有刷和无刷直流电机的综合信息。可能包含两个部分:一是对比介绍两者的区别,如工作原理、结构特点、优缺点;二是...

    祭司——看沧月《帝都赋》有感.doc

    祭司——看沧月《帝都赋》有感.doc

    看电影阿凡达有感.doc

    看电影阿凡达有感.doc

    BLDC电机学习教程之BLDC有感驱动的详细资料概述

    本教程主要讲解了BLDC电机的有感驱动,特别是霍尔传感器的应用,这对于学习BLDC电机驱动来说是一份必备资料。 首先,霍尔传感器在BLDC电机中有两种常见的角度分布:120°和60°。120°霍尔传感器的编码结果与60°...

    stm32有感无刷直流电机驱动程序

    stm32有感无刷直流电机驱动程序 stm32有感无刷直流电机驱动程序 stm32有感无刷直流电机驱动程序 stm32有感无刷直流电机驱动程序 stm32有感无刷直流电机驱动程序 stm32有感无刷直流电机驱动程序 stm32有感无刷直流...

    看将改革进行到底有感.doc

    看将改革进行到底有感.doc

    看《假文盲》有感.doc

    看《假文盲》有感.doc

    SH79F1611有感方波方波方案.rar

    从【压缩包子文件的文件名称】"电动三轮车有感方波参考设计(中颖方案)"来看,提供的资料可能是详细的电路图、代码示例、应用指南等,帮助开发者理解如何将SH79F1611单片机应用于电动三轮车的有感方波驱动系统中。...

Global site tag (gtag.js) - Google Analytics