Search for a Range C#
来源:互联网 发布:北京市大数据公司 编辑:程序博客网 时间:2024/05/22 13:23
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 ofO(logn).
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]
.
题意:返回数组nums中等于target的元素的开始结束坐标,未找到返回[-1,-1],要求O(LogN)的时间复杂度。
解析:找到nums中石头有这个元素很简单,因为是sorted的array,折半查找可以找到其中一个元素等于target ,其他的元素也分布在两边。可以使用two pointers,一个向前一个向后,分别找到第一个不等于target的元素。
代码实现:
public class Solution { public int[] SearchRange(int[] nums, int target) { if (nums.Length == 0) return new int[] { -1, -1 }; int begin = 0; int end = nums.Length - 1; int mid = (end + begin) / 2; while (begin < end) { if (nums[mid] < target) { begin = mid + 1; mid = (begin + end) / 2; } else if (nums[mid] > target) { end = mid - 1; mid = (begin + end) / 2; } else break; } if (nums[mid] != target) return new int[] { -1, -1 }; for (begin = mid; begin >= 0; begin--) { if (nums[begin] != target) break; } for (end = mid; end < nums.Length; end++) { if (nums[end] != target) break; } return new int[] { begin + 1, end - 1 }; } }
0 0
- Search for a Range C#
- 【LeetCode】C# 34、Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range !!!
- Search for a Range
- Search for a Range
- Search For A Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- Search for a Range
- 2015.6.10(java并发)
- led驱动程序和test程序分析
- goodFeaturesToTrack函数
- 多选判断题的判断。
- Hadoop1.x中HDFS工作原理
- Search for a Range C#
- 2015.6.11(java并发续)
- 求给定数等于最少的几个完全平方数之和
- 很好的平台,值得推荐
- Ext 颜色选择器使用
- 称砝码
- lotus sametime 启动故障
- 机器学习算法基础概念总结
- mysql笔记