www.狠狠干_伊人超碰_国内精品久久精品_成人一区二区三区_亚洲欧美日韩精品久久亚洲区_国产精品久久久久久福利一牛影视

當前位置:高考升學網 > 招聘筆試題 > 正文

2019人人網算法類筆試題和面試題答案匯總

更新:2023-09-16 22:46:41 高考升學網

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

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

  解法一:

  #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。

  時間復雜度:O(N)

  空間復雜度:O(N)

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

  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) 更多熱門的筆試題目推薦:
中國人民銀行的筆試題
上海東方傳媒集團筆試題
廣東北電研發工程師筆試題
金融投資顧問常考筆試題目

最新圖文

2020年河北新聞網兩學一做

時間:2023-09-18 07:0:24

2020年河北新聞網兩學一做

時間:2023-09-15 11:0:59

兩學一做學習教育知

時間:2023-09-21 06:0:30

2020年開展兩學一做學習教

時間:2023-09-19 21:0:30
主站蜘蛛池模板: 国产精品中文字幕在线 | 影音先锋中文字幕一区 | 亚洲国产激情 | 一级毛片免费高清 | 羞羞羞羞 | 日韩中文字幕一区二区三区 | 不卡一二区 | 国产v日产∨综合v精品视频 | www.久久久久久久 | 中文av一区二区 | 国产一区二区三区视频在线观看 | 亚洲精品久久久久久国产 | 成人h动漫精品一区二区器材 | 午夜精品视频在线观看 | 一区二区三区 在线 | 狠狠干av | 国产一区 | 四季久久免费一区二区三区四区 | 天天躁日日躁狠狠躁 | 亚洲国产中文字幕 | av天天看 | 亚洲午夜视频在线 | 午夜激情视频在线观看 | 免费av电影网站 | 最新中文字幕在线 | 亚洲美女一区 | 国产精品剧情一区二区三区 | 精品在线一区二区 | 综合伊人久久 | 精品国产区 | 亚洲精品视频网站在线观看 | 北条麻妃在线一区二区三区 | 午夜剧 | 在线观看av大片 | 成人性生交大片免费看网站 | 亚洲高清毛片一区二区 | 国产精品女同一区二区久久夜 | 欧美一区二区在线播放 | 亚洲精品一 | 欧美在线播放一区 | 亚洲成人av一区二区 |