• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

LeetCodeOnlineJudge题目C#练习-SearchforaRange

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Given a sorted array of integers, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1].
For example,
Given [5, 7, 7, 8, 8, 10] and target value 8,
return [3, 4].

 1         public static List<int> SearchforaRange(int[] A, int target)
 2         {
 3             List<int> ret = new List<int>();
 4 
 5             ret.Add(BinarySearchlow(A, 0, A.Length - 1, target));
 6             ret.Add(BinarySearchup(A, 0, A.Length - 1, target));
 7 
 8             return ret;
 9         }
10 
11         public static int BinarySearchlow(int[] A, int start, int end, int target)
12         {
13             if (start > end)
14                 return -1;
15 
16             int mid = start + ((end - start) / 2);
17             if(A[mid] == target && (mid == 0 || A[mid - 1] < target))
18             {
19                 return mid;
20             }
21             else if (A[mid] < target)
22             {
23                 return BinarySearchlow(A, mid + 1, end, target);
24             }
25             else
26             {
27                 return BinarySearchlow(A, start, mid - 1, target);
28             }
29         }
30 
31         public static int BinarySearchup(int[] A, int start, int end, int target)
32         {
33             if (start > end)
34                 return -1;
35 
36             int mid = start + ((end - start) / 2);
37             if (A[mid] == target && (mid == end || A[mid + 1] > target))
38             {
39                 return mid;
40             }
41             else if (A[mid] > target)
42             {
43                 return BinarySearchup(A, start, mid - 1, target);
44             }
45             else
46             {
47                 return BinarySearchup(A, mid + 1, end, target);
48             }
49         }

代码分析:

  时间复杂度要求O(log n),已经提醒了要用二分查找法,这个其实就是一个Binary Search 的 Variant。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#获取时间在当前窗口显示发布时间:2022-07-10
下一篇:
c#中stringbuilder的使用(转载学习)发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap