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

轩辕互动面试1题

阅读更多
下午去轩辕互动面试了,可是第一轮就被刷了。没办法,没有那本事。
面试时问的是上一次做的一个题目:查找一个排好序的数组中绝对值不相同的数的个数。
我以前做的一个算法的复杂度为nlog(n), 晚上回来好好想了想,终于想出了一个O(n)的算法

public class DistinctCount{
	public static int distinctCount(int[] data){
		int start = 0;
		int end = data.length - 1;
		int count = 0;
		
		while(start <= end){
			while((start < (data.length - 1)) && (data[start] == data[start + 1]) && (start <= end)){
				start++;
				count++;
			}
			
			
			while((end > 0) && (data[end] == data[end - 1]) && (start <= end)){
				end--;
				count++;
			}
			
			if(start > end)
				break;
				
			if((data[start] == data[end]) || (data[start] + data[end] == 0)){
				start++;
				end--;
				count++;
			}else if(data[start] >= 0 || data[end] <= 0){
				start++;
			}else{
				if(data[start] + data[end] < 0)
					start++;
				else
					end--;
			}
		}
		
		return data.length - count + 1;
	}
	
	public static void main(String[] args){
		//int data[] = {-10, -10, -9, -9, -8, -7, -5, -3, 0, 1, 2, 2, 3, 3, 4, 5, 5, 5, 6, 7, 7};
		int data[] = {1, 1, 1, 1, 1};
		System.out.println(DistinctCount.distinctCount(data));
	}
}

分享到:
评论
2 楼 dodo452 2010-05-30  
其实很简单,红色字体为核心代码,本算法复杂度为O(n)
package dodo;

public class TestQuery {
    
   public static int statistic(int[] arr)
    {
    int count = 1;
int prior = Math.abs(arr[0]);
for(int i=1;i<arr.length;i++)
{
if(prior != Math.abs(arr[i]))
{
count++;
prior = Math.abs(arr[i]);
}
}

return count;

    }

   
   public static int[] sort(int [] arr)
   {
   for(int i =0;i<arr.length;i++)
   {
   for(int j=i+1;j<arr.length;j++)
   {
   if(arr[i]>arr[j])
   {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
   }
   }
   }
   return arr;
   }
  
   public static void show(int[] arr)
   {
  for(int i =0;i<arr.length;i++)
  {
  System.out.print(arr[i]+"\t");
  }
  System.out.println();
   }
    public static void main(String[] args) {
     int[] arr = new int[]{2,3,4,3,1,3,2,-1,-3,0};
     arr = sort(arr);
     show(arr);
     System.out.println(statistic(arr));
    }
}
1 楼 ryan.liu 2010-04-21  
public static int distinctCount(int[] data){
    int i = 0;
    int j = data.length-1;
    int last = -1;
    int count = 1;
    int p, q;
    //i向后移动,j向前移动
    while (i<j) { //没有相遇
        p = Math.abs(data[i]);
        q = Math.abs(data[j]);
        if (p>=q) { //向前移动
            i++;
            if (p!=last) { count++; }
            last = p;
        }
        else{ //向后移动
            j--;
            if (q!=last) { count++; }
            last = q;
        }
    }
    return count;
}

相关推荐

    轩辕剑online、轩辕剑4中PLY模型读取程序源码

    1. lzo.cpp:这是LZO(Lempel-Ziv-Oberhumer)压缩库的实现。LZO是一种快速轻量级的无损数据压缩算法,常用于内存限制或速度敏感的应用中。在这个项目中,LZO可能用于解压PLY文件中可能压缩的数据。 2. tex.cpp:这...

    轩辕剑枫之舞(Dosbox运行)

    《轩辕剑外传 枫之舞》是由大宇资讯制作的角色扮演游戏,于1995年1月6日在台湾发行。这款游戏是轩辕剑系列的首部外传作品。游戏背景设定在战国时期,讲述了墨子弟子辅子彻发现鬼谷子弟子蜀桑子的阴谋后,踏上江湖的...

    轩辕剑java代码

    【标题】:“轩辕剑java代码”揭示了这个压缩包文件主要包含与“轩辕剑”相关的Java编程源代码。轩辕剑,作为一个历史悠久的中国神话传说中的宝剑,可能在此处指的是一个软件项目或游戏的名称,而这个项目或游戏的...

    趴站蹲点\轩辕剑V3.31.zip

    在《轩辕剑V3.31》中,玩家将扮演主角,与其他角色互动,解决谜题,与敌人战斗。游戏采用了回合制战斗系统,玩家可以根据角色的属性和技能策略性地进行战斗。此外,游戏还包含了丰富的物品系统、技能树和角色养成...

    轩辕中学2008—2009学年八年级数学下月考试题精选.doc

    这份文档是轩辕中学2008—2009学年八年级数学下月的考试试题,涵盖了选择题、填空题和解答题等多种题型,主要测试学生的数学能力,包括但不限于代数、不等式、方程、因式分解、几何等知识点。 1. **选择题**: - ...

    手机游戏——轩辕豪侠传-破解版.jar

    最新的手机游戏——轩辕豪侠传-破解版.jar

    轩辕7004硬盘录像机软件

    本设备是专为安防领域设计的一款数字监控产品,它采用了嵌入式处理器和嵌入式操作系统,结合了IT 领域各项最新技术,如视音频压缩/解压缩、大容量硬盘记录、TCP/IP 网络等技术,代码固化在FLASH 中,使得系统运行更...

    VC轩辕剑天之痕【包含图片视频音乐源代码】PART.1

    VC轩辕剑天之痕【包含图片视频音乐源代码】PART.1

    轩辕9500四路软件.zip

    轩辕9500四路软件.zip是一个压缩包文件,包含了专为轩辕品牌的四路采集卡设计的Windows驱动程序和相关工具。这个采集卡是用于监控系统中的,它利用同轴电缆作为传输媒介来捕获和处理视频信号。同轴通信是一种传统而...

    轩辕剑online、轩辕剑4中PLY模型读取工具

    可以读取显示轩辕剑online、轩辕剑4、苍之涛里面的PLY模型。

    轩辕4路监控卡驱动

    【轩辕4路监控卡驱动】是一款专为四通道监控设备设计的硬件驱动程序,由轩辕品牌在2012年6月发布。该驱动程序的主要功能是为4路监控采集卡提供必要的支持,确保视频数据的稳定传输和高质量的图像显示。在监控系统中...

    【站长亲测】轩辕剑一键安装即玩服务端游戏程序+充值后台

    轩辕剑一键安装即玩服务端游戏程序+充值后台

    轩辕剑5完全說明手册

    轩辕剑5完全說明手册 轩辕剑5完全說明手册

    轩辕剑3外传天之痕完全手册

    轩辕剑3外传天之痕完全手册

    轩辕旅行网站源码,全源码

    1. ASP.NET框架:ASP.NET是Microsoft提供的用于构建动态Web应用程序的框架,它简化了服务器端编程,提供了丰富的控件库和强大的数据绑定功能。在这个项目中,开发者可能利用ASP.NET MVC(模型-视图-控制器)或ASP...

    轩辕中学八年级下数学周测试题精选.doc

    7. **实际长度与比例尺的换算**:第15题中给出了交通图的比例尺1:38000,要求计算实际长度,需要理解比例尺的概念,知道图上距离乘以比例尺等于实际距离。 8. **相似多边形**:第9题提到了不同类型的多边形,如等边...

    轩辕剑网络版经验显示工具

    仅显示轩辕剑网络版游戏中的经验数值 支持双开,支持蚩尤再现 不提供外挂功能

    河南省郑州市轩辕2012年九年级数学上学期第一次月考试题(无答案) 北师大版 试题.doc

    这份文档是河南省郑州市轩辕中学2012年九年级数学上学期第一次月考试题,采用的是北师大版教材。试题涵盖了多个初中数学的核心知识点,包括等腰三角形的性质、几何作图、一元二次方程、反证法、二次函数的零点、线段...

    截取轩辕剑6的3D模型

    截取轩辕剑6的3D模型 《轩辕剑陆》正式版(需激活)或试玩版(←我不是来卖萌的,强迫症一定要列全,桑不起…) (2) GameAssassin,游戏模型截取软件。

    通过MAX SDK获取轩辕剑PLY运动矩阵

    通过MAX SDK获取轩辕剑PLY运动矩阵;

Global site tag (gtag.js) - Google Analytics