1、在排序陣列中,找出給定數字的出現次數,比如 [1, 2, 2, 2, 3] 中2的出現次數是3次。
#include extern int low=0,high=10,mid=0;
void find(int *a,int p)//找到p的其中位置
else low=mid; }}
int tosit(int *a,int p)//以p為中心向兩邊擴散
else
}if(j<=high)
else}}
return counter;
}void main()
; int p=9;
int k;
find(a,p);
k=tosit(a,p);
printf("%d出現了%d次",p,k);
}
演算法複雜度為o(logn)。
2、反序乙個單向鍊錶
(本題做法**:
怎麼做呢?最簡單的就是在建立乙個鍊錶...不停的插入乙個head就可以了...那必須用到兩個額外變數...不過很好理解...baihowff今天發的顯然不是這個方法...baihowff給出的方法只用增加乙個臨時變數p就可以實現了...怎麼實現呢?
我先簡單說一下演算法...其實就是將p先指向head->next ,再將head->next賦為null,再執行迴圈while(p!=null)時交換head和p->next 以及 head和p就可以了...其實就是將p儲存下乙個鍊錶元素..然後反覆的往head前新增...這個演算法其實和用兩個的思想一樣..但是寫起來很巧妙...先給出完整程式吧...
#include using namespace std;
struct node
; typedef node* pnode;
pnode reverse(pnode head);
void printlist(pnode head);
int main(int argc,char* argv)
pnode reverse(pnode head)
// 防止記憶體洩露
delete p;
p=null;
// 實現鏈式操作
return head;
}
void printlist(pnode p)
cout<
3、寫出正規表示式,從乙個字串中提取鏈結位址。比如下面字串中
"it面試題部落格中包含很多 微軟面試題
> 微軟面試題 "
則需要提取的位址為 "
微軟面試題
"使用linux的awk方法:
awk -f'[<>]' '' 檔名|grep 'http.*'
面試題收集
1.實現乙個add方法 add 1 2,3 4 value 輸出 10 分析 對柯里化函式進行改造 原curry函式 function curry f,args1 return inner 改造後curry函式 function curry f,args1 新增value方法 inner.value...
微軟面試題
題目 小明和小強都是張老師的學生,張老師的生日是m月n日,2人都知道張老師的生日是下列10組中的一天,張老師把m值告訴了小明,把n值告訴了小強,張老師問他們知道他的生日是那一天嗎?3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 小明說 如果我...
微軟面試題
fly.c4 推薦您必看!六.演算法題 說明 這些題就不是什麼花樣了,考的是你的基礎知識怎麼樣。再聰明而沒有實學的人都將會被這些題所淘汰。1.鍊錶和陣列的區別在 2.編寫實現鍊錶排序的一種演算法。說明為什麼你會選擇用這樣的方法?3.編寫實現陣列排序的一種演算法。說明為什麼你會選擇用這樣的方法?4.請...