阿里笔试题:在n个人中找明星

题目描述:有N个人,其中一个明星和n-1个群众,群众都认识明星,明星不认识任何群众,群众和群众之间的认
识关系不知道,现在如果你是机器人R2T2,你每次问一个人是否认识另外一个人的代价为O(1),试设计
一种算法找出明星,并给出时间复杂度(没有复杂度不得分)。

----------------------------------------------------------------------------

一种思路:取出两个人,如1号和2号,如果1号认识2号,那么1号不是明星,去除1号;如果1号不认识2号,那么2号不是明星,去除2号。如此比下去,遍历一遍,即可找出明星(剩下的那个)。时间复杂度O(n)。

用两个指针i和j分别指向前、后的两个人,比较一次根据比较结果做一次位置调整。

bool isRecgn(int i,int j);  //判断i是否认识j

//n个人中找明星 n>1
int find(int a[],int n)
{
    int i=0,j=1;
    int cand = i;
    while(j<n)
    {
        if(isRecgn(i,j)){
            cand = j;
            i = j;
            if(++j>n)
                break;
        }
        else{
            cand = i;
            if(++j>n)
                break;
        }
    }
    return cand;
}

  

时间: 2024-10-01 23:13:51

阿里笔试题:在n个人中找明星的相关文章

阿里笔试题(2015)持续更新中

第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平均每个人逗留时间为20分钟,那么开场前20分钟一共来了400人,且有20个人逗留时间已经到,但他们不一定出去,注意是平均时间,所有博物馆最少应该容纳500人 双向循环列表,从任何一个元素开始可以遍历全部元素 先和后面的元素相连 s->next=p->next; p->next->pre

阿里笔试题记录(Android客户端部分)

阿里笔试题记录(Android客户端部分) 选择题 结果应该是选择 80,8 思路: - 指针的值都是一个个地址,而地址是用无符号整型值来表示的,也就是unsigned int.因此一个指针类型变量的大小就是unsigned int类型的大小. - 64位系统,一个地址占用的二进制位数为64(8字节),32位系统,地址的二进制位数32(4字节).参考64位操作系统的指针不都是64位吗 32位cpu和64位cpu,这个位数指的是数据字长,而不是地址字长.两者没有必然的数值上的联系.处理器字长是指处

阿里笔试题-派生类构造函数 创建顺序

派生类 与基类的关系: (1)创建构造函数的顺序 :基类构造函数(注意此处基类的成员不能初始化) ==>派生类成员初始化 ==>派生类构造函数 (2)派生类的构造函数 中 基类的构造函数默认在第一条,如果不写super(),则默认在第一条,注意位置不能颠倒 (3)派生类可以继承全部的基类的构造函数 阿里笔试题 举个栗子: 1 package com.test; 2 3 public class DispatchTest { 4 5 public static void main(String[

阿里笔试题:求两个子序列的最大连续子序列

原题例如以下: 给定一个query和一个text,均由小写字母组成.要求在text中找出以相同的顺序连续出如今query中的最长连续字母序列的长度.比如.query为 "acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出如今query中的字母序列,因此.返回结果应该为其长度3.请注意程序效率. 解题方法一: 和字符串匹配一样(http://blog.csdn.net/sinat_24520925/articl

阿里笔试题之Android网络优化

记得这是阿里校招笔试的一道问答题 答案是小伙伴们之后一起拼出来的,不乏有些飘忽的东西,需要的朋友可以做个参考(具体细节可以自行百度),欢迎提出更好的建议! 在客户端方面: 1.减少网络请求的数量,能够合并的网络请求尽量合并,尽量在一次查询中完成多个零散数据的查询 2.为网络数据做本地缓存处理 3.设置超时时间,数据压缩传送,比如从服务器端获取列表数据,如果可以最好是能将服务器端的流压缩一下,接收压缩流,这样速度会快点,而且省流量. 3.多线程处理,不要死等网络操作的结果,把耗时工作及计算放在子线

一天积累一点儿之阿里笔试题

励志把阿里的题库弄出来!当然,主要目的还是想知道自己还有哪些知识点的欠缺和不足 1. (1)这个element的onclick事件,this当然指的是这个element了 (2)window (3)window  这两种方式都没有把element传给doSomething,所以this默认指向window 2. 1 Array.prototype.sorting = function(fn){ 2 var t; 3 if(!fn){ 4 fn = function(a,b){ 5 return

又一份阿里笔试题

接踵而至的笔试啊...各种忙碌啊... 1,  假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数() A.h(k)= K/N  B.h(k)=1  C.h(k) = k mod N D.h(k) = (K + random(N) ) mod N   ,random(N)返回一个0到N的整数 2,下面的排序算法中,初始化数据集的排练顺序对算法的性能无影响的是() A,堆排序  B,插入排序  C,冒泡排序  D,快速排序 3,下面说法错误的是() A,CISC计算机比RIS

阿里笔试题--最大流

图示是一个网络流从s到t的某时刻快照.此时t处一共接收到10+13+16=39单位流量.每条横线上的数字表示当前流量和管道的容量.那么,该网络最大的流量是多少? 解: 第一次残存网络: 39+2=41,调整后的残存网络为 找不到增广路径,则最大流量为41 欢迎指正!!

惨挂阿里笔试题

昨天阿里笔试,惨挂到一算法题,现分享此题,集网友智慧,看如何解答此题. 请大神们不吝赐教哦! 版权声明:本文为博主原创文章,未经博主允许不得转载.