当前位置: 首页 > 面试 > 正文

微软面试题(七)

关键字:
1 星2 星3 星4 星5 星 (2 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

7、在排序数组中,找出给定数字的出现次数。比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 void equal_range1(int a[], int len, int x)
 6 {
 7     int low=0, high=len-1;
 8     int mid;
 9     while (low<=high)
10     {
11         mid=(low+high)/2;
12         if (x==a[mid]) {cout << mid << endl; break;}
13         else if (x<mid) high=mid-1;
14         else low=mid+1;
15     }
16     if (low>high)
17     {
18         cout << "ûÓÐÕÒµ½" << x << endl;
19     }
20     else
21     {
22         int k=mid-1;
23         while (k>=0&&a[k]==x)
24         {
25             cout << k-- << endl;
26         }
27         k=mid+1;
28         while (k<=len-1&&a[k]==x)
29         {
30             cout << k++ << endl;
31         }
32     }
33 }
34 
35 int main()
36 {
37     int a[] = {1,2,2,2,2,3,4};
38     equal_range1(a, 7, 2);
39     return 0;
40 }

本文固定链接: http://www.chepoo.com/microsoft-interview-seven.html | IT技术精华网

【上一篇】
【下一篇】

微软面试题(七):等您坐沙发呢!

发表评论