程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Linkedin面試題

Linkedin面試題

編輯:關於C語言

找出數組中和為N的一對數
/*
find the pair in an array .... that sum up to particular number
Company:Linkedin
Date:8/11/2011
*/
#include <iostream>
#include <cstdlib>
#include <ctime>

int randomPartition(int A[], int low, int high);
void quickSort(int A[],int low, int high);
bool findPair(int A[],int size,int sum,std::pair<int,int>& result);
void quickSort(int A[], int low, int high)
{
 if(low>=high)
  return;
 int pivot=randomPartition(A,low,high);
 quickSort(A,low,pivot-1);
 quickSort(A,pivot+1,high);
}
int randomPartition(int A[], int low, int high)
{
 srand(time((int)0));
 int index=low+rand()%(high-low+1);
 int t=A[high];
 A[high]=A[index];
 A[index]=t;
 int key=A[high];
 int i=low-1;
 for(int j=low; j<high;j++)
 {
  if(A[j]<=key)
  {
   i++;
   int t=A[i];
   A[i]=A[j];
   A[j]=t;
  }
 }
 i++;
 t=A[high];
 A[high]=A[i];
 A[i]=t;
 return i;
}
bool findPair(int A[],int size,int sum,std::pair<int,int>& result)
{
 quickSort(A,0,size-1);
 int i=0;
 int j=size-1;
 while(i<j)
 {
  if(A[i]+A[j]==sum)
  {
   result.first=A[i];
   result.second=A[j];
   return true;
  }
  else if(A[i]+A[j]<sum)
   i++;
  else
   j--;
 }
 return false;
}
void main()
{
 int A[10]={-2,-5,1,4,3,9,6,5,7,0};
 int sum;
 std::cout<<"Please enter a sum value\n";
 std::cin>>sum;
 std::pair<int,int> result(0,0);
 if(findPair(A,10,sum,result))
  std::cout<<result.first<<"+"<<result.second<<" = "<<sum<<"\n";
 else
  std::cout<<"No pair found\n";
}
本文出自 “面試” 博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved