人人網(wǎng)算法類筆試題和面試題答案匯總

大風(fēng)車考試網(wǎng)

  如下為大家匯總的內(nèi)容是2017年人人網(wǎng)算法類筆試題,感興趣的朋友可以練習(xí)下。
  1.給出一個有序數(shù)組啊,長度為len,另外給出第三個數(shù)X,問是否能在數(shù)組中找到兩個數(shù),這兩個數(shù)之和等于第三個數(shù)X。

  我們首先看到第一句話,這個數(shù)組是有序的,所以,我們可以定義兩個指針,一個指向數(shù)組的第一個元素,另一個指向應(yīng)該指向的位置(這個需要看具體的實現(xiàn)和數(shù)組給定的值),首先計算兩個位置的和是否等于給定的第三個數(shù),如果等于則算法結(jié)束,如果大于,則尾指針向頭指針方向移動,如果小于,則頭指針向尾指針方向移動,當(dāng)頭指針大于等于尾指針時算法結(jié)束,沒有找到這樣的兩個數(shù)。

  解法一:

  #include

  int judge(int *a, int len, int k, int *num1, int *num2);

  int main(int argc, char *argv)

  {

  int test_array[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};

  int result = -1;

  int num1, num2;

  result = judge(test_array, sizeof(test_array) / sizeof(int), 12, &num1, &num2);

  if(result == 0)

  {

  printf("%d %d ", num1, num2);

  }

  else if(result == -1)

  {

  printf("can't find");

  }

  else

  {

  printf("error");

  }

  }

  int judge(int *a, int len, int k, int *num1, int *num2)

  {

  int *low = NULL;

  int *high = NULL;

  int i = 0;

  int result = -1;

  if(a == NULL || len < 2)

  {

  return result;

  }

  if(a[0] >= k)

  {

  return result;

  }

  while(a[i] <= k && i < len)

  {

  i++;

  }

  low = a;

  high = a + i - 1;

  while(low < high)

  {

  *num1 = *low;

  *num2 = *high;

  if((*low + *high) == k)

  {

  result = 0;

  break;

  }

  else if((*low + *high) > k)

  {

  high--;

  }

  else if((*low + *high) < k)

  {

  low++;

  }

  }

  return result;

  }

  解法二:

  #include

  using namespace std;

  int hash_table[100];

  bool judge(int *a, int len, int x)

  {

  memset(hash_table, 0, sizeof(hash_table));

  for (int i=0; i

  {

  hash_table[x - a[i]] = 1;

  }

  for (int i=0; i

  {

  if (hash_table[i] == 1)

  {

  return true;

  }

  }

  return false;

  }

  int main()

  {

  int len = 10;

  int a[10] = {1, 3, 5, 7, 9, 4, 2, 8, 10, 6};

  int x = 19;

  if (judge(a, len, x))

  {

  cout<<"Yes"<

  }

  else

  {

  cout<<"No"<

  }

  system("pause");

  return 0;

  }

  本題解決方法:hash table。

  時間復(fù)雜度:O(N)

  空間復(fù)雜度:O(N)

  2.給定有n個數(shù)的數(shù)組a,其中有超過一半的數(shù)為一個定值,在不進(jìn)行排序,不開設(shè)額外數(shù)組的情況下,以最高效的算法找出這個數(shù)。

  int find(int* a, int n);

  #include

  using namespace std;

  int find(int *a, int n)

  {

  int t = a[0];

  int count = 0;

  for (int i=0; i

  {

  if (count == 0)

  {

  t = a[i];

  count = 1;

  continue;

  }

  else

  {

  if (a[i] == t)

  {

  count++;

  }

  else

  {

  count--;

  }

  }

  }

  return t;

  }

  int main()

  {

  int n = 10;

  int a[10] = {1, 3, 2, 3, 3, 4, 3, 3, 3, 6};

  cout<

  system("pause");

  return 0;

  }

  Time Complexity: O(n)

  Space Complexity:O(1) 更多熱門的筆試題目推薦:
中國人民銀行的筆試題
上海東方傳媒集團(tuán)筆試題
廣東北電研發(fā)工程師筆試題
金融投資顧問?脊P試題目

  • 相關(guān)文章
  • 聯(lián)通筆試題和面試題答案(匯總)聯(lián)通筆試題和面試題答案(匯總)

    26二、語句表達(dá)(26-35題)請你從語氣、詞序、語法結(jié)構(gòu)等方面對有關(guān)語句作出判斷。 請從所給的四個句子中選一個沒有語病的句子。 A毛筆是我國古代的文房..

  • 聯(lián)通筆試題和面試題答案(匯總)聯(lián)通筆試題和面試題答案(匯總)

    第三部分判斷推理 一、事件排序(46-55題)選擇最合乎邏輯的一種事件順序。 (1)廠家驗收(2)圖紙設(shè)計(3)土地勘測(4)產(chǎn)品出廠(5)監(jiān)理施工 A2-3-5-4-1 ..

  • 聯(lián)通筆試題和面試題答案(匯總)聯(lián)通筆試題和面試題答案(匯總)

    一般能力傾向測驗題量:100道時間:120分鐘 61漢語中,有不少詞語是由外語音譯過來的。如“坦克”、“尼龍”等,下列幾組詞語中,哪..

  • 聯(lián)通筆試題和面試題答案(匯總)聯(lián)通筆試題和面試題答案(匯總)

    26二、語句表達(dá)(26-35題)請你從語氣、詞序、語法結(jié)構(gòu)等方面對有關(guān)語句作出判斷。 請從所給的四個句子中選一個沒有語病的句子。 A毛筆是我國古代的文房..

  • 聯(lián)通筆試題和面試題答案(匯總)聯(lián)通筆試題和面試題答案(匯總)

    第三部分判斷推理 一、事件排序(46-55題)選擇最合乎邏輯的一種事件順序。 (1)廠家驗收(2)圖紙設(shè)計(3)土地勘測(4)產(chǎn)品出廠(5)監(jiān)理施工 A2-3-5-4-1 ..

  • 聯(lián)通筆試題和面試題答案(匯總)聯(lián)通筆試題和面試題答案(匯總)

    一般能力傾向測驗題量:100道時間:120分鐘 61漢語中,有不少詞語是由外語音譯過來的。如“坦克”、“尼龍”等,下列幾組詞語中,哪..

  • 河北新聞網(wǎng)兩學(xué)一做知識競賽(試題+答案完整版)河北新聞網(wǎng)兩學(xué)一做知識競賽(試題+答案完整版)

    2016河北新聞網(wǎng)兩學(xué)一做知識競賽開賽啦,快來圍觀吧;顒觾(nèi)容為推動“兩學(xué)一做”學(xué)習(xí)教育深入開展,省委宣傳部、省委組織部組織開展“兩學(xué)一做”知識競賽活動,河北..

  • 河北新聞網(wǎng)兩學(xué)一做知識競賽活動試題答案河北新聞網(wǎng)兩學(xué)一做知識競賽活動試題答案

    2016年河北新聞網(wǎng)兩學(xué)一做知識競賽活動試題答案為推動“兩學(xué)一做”學(xué)習(xí)教育深入開展,省委宣傳部、省委組織部組織開展“兩學(xué)一做”大型知識競賽。此項活動由河北新聞..

  • 兩學(xué)一做學(xué)習(xí)教育知識競賽活動10篇兩學(xué)一做學(xué)習(xí)教育知識競賽活動10篇

    為隆重紀(jì)念中國共產(chǎn)黨建黨95周年,推進(jìn)我市“兩學(xué)一做”學(xué)習(xí)教育深入開展,推動廣大黨員干部認(rèn)真學(xué)好黨章黨規(guī)和*系列重要講話,現(xiàn)將“兩學(xué)一做”學(xué)習(xí)教育知識競賽題予..

  • 開展兩學(xué)一做學(xué)習(xí)教育知識競賽活動真題答案開展兩學(xué)一做學(xué)習(xí)教育知識競賽活動真題答案

    144.根據(jù)《中國共產(chǎn)黨紀(jì)律處分條例》規(guī)定,黨的各級代表大會的代表受到(D)處分的,黨組織應(yīng)當(dāng)終止其代表資格。A.警告(含)以上B.嚴(yán)重警告(含)以上C.撤銷黨內(nèi)職務(wù)(含)以..