1.鍊錶翻轉。給出乙個鍊錶和乙個數k,比如鍊錶1→2→3→4→5→6,k=2,則翻轉後2→1→4→3→6→5,若k=3,翻轉後3→2→1→6→5→4,若k=4,翻轉後4→3→2→1→5→6,用程式實現。
#include using namespace std;
struct listnode
;
listnode* createlist(int val)
void insertnode(listnode **phead, int val)
(*phead)->m_pnext = pnode;
(*phead) = pnode;
}
void printlist(listnode *phead)
coutlistnode *ppre = null;
listnode *pcurrent = phead;
listnode *ppost = phead->m_pnext;
while (pcurrent->m_pnext != null)
pcurrent->m_pnext = ppre;
return pcurrent;
}
listnode* reverselist(listnode *phead, int k)
listnode *ppre = null;
listnode *pcurrent = phead;
listnode *ppost = phead->m_pnext;
listnode *pstart = null;
listnode *pend = null;
int n = 0;
pend = pcurrent;
pend->m_pnext = null;
while (ppost != null)
else
} pcurrent->m_pnext = ppre;
pstart = reverse(pcurrent);
return pstart;
}
int main()
else
} int k;
cout<<"請輸入k:"<>k;
head = reverselist(head, k);
printlist(head);
system("pause");
return 0;
}
2.乙個函式access(),呼叫頻率不能超過r次/sec,用程式實現乙個函式,當超過r次/sec時返回access false,不超過時返回success
#define false 0
#define success 1
int getcurrentms()
bool count_access()
count++;
access();
if(count>=r)
return success;
}
3.
乙個m*n的矩陣,從左到右從上到下都是遞增的,給乙個數elem,求是否在矩陣中,給出思路和代 碼.
解: 思路:從矩陣的右上角開始判斷即可,每次可以消除一行或一列,詳見劍指offer一書.
4.利用兩個棧,模擬queue
#include #include using namespace std;
template class queue
~queue()
void add(const t& t);
t remove();
private:
stacks1;
stacks2;
};
template void queue::add(const t& t)
template t queue::remove()
} if (s2.size() == 0)
t t = s2.top();
s2.pop();
return t;
} int main()
private int getsubcount(char s1,char s2, int i ,int j)
return count;
} }
6.1.將1-7個數字的全排列按照從小到大的順序放在乙個陣列,例如第0個元素是1234567,第1個是1234576,第5039個是7654321.請問第1646個元素是多少?
答案:3265417.
7.6位數字且第一位不為0的美團券密碼,在易個液晶數字裝置上顯示,倒過來看與原,ima一樣的概率是多少(如129621)(液晶顯示的數字1倒過來也算一樣哦)。
8.求單鏈表的倒數第k個元素。
struct node
;typedef node* list;
實現該函式
int findlastkthelement(list list, int k)。
9.現有實數陣列a和b,希望將a和b歸併為乙個有序陣列c,且c中無重複的數,請寫出演算法並給出演算法複雜度。
10.如果兩個正整數a和b,a的所有真因子之和等於b,b的所有真因子之和等於a,則稱a,b是amicable pair(說明:真因子包括1但不包括本身,比如14的真因子為1、2、7)。例如220和284就是amicable pair。
請寫一段**,列印出所有不超過1000萬的amicable pair。
人人網2014筆試演算法題彙總
1.給出乙個有序陣列啊,長度為len,另外給出第三個數x,問是否能在陣列中找到兩個數,這兩個數之和等於第三個數x。我們首先看到第一句話,這個陣列是有序的,所以,我們可以定義兩個指標,乙個指向陣列的第乙個元素,另乙個指向應該指向的位置 這個需要看具體的實現和陣列給定的值 首先計算兩個位置的和是否等於給...
暴風影音2014筆試演算法題彙總
1.自定義實現字串轉為整數的演算法,例如把 123456 轉成整數123456.輸入中可能存在符號,和數字 返回結果的有效標誌 enum status int gstatus valid int strtoint const char str while digit 0 digit 非法輸入 els...
阿里巴巴2014筆試演算法題彙總
1.兩棵二叉樹t1和t2,t1的節點數是百萬量級,t2的節點數一千以內,請給出判斷t2是否t1子樹的可行演算法。分析 首先想到的是遞迴,但是t1的數量級太大,遞迴會導致棧溢位,於是以非遞迴實現。bool issubtree binarytreenode proot1,binarytreenode p...