十三周 Dynamic programming counting bits
2017-06-04 13:00
260 查看
Problem
Given a sorted array of n integers, find the starting and ending position of a given target value.
If the target is not found in the array, return
[-1, -1].
Example
Given [5, 7, 7, 8, 8, 10]and target value
8,
return
[3, 4].
首先,建立二元结果数组res,起点start,终点end。
二分法求左边界:
当中点小于target,start移向中点,否则end移向中点;
先判断起点,再判断终点是否等于target,如果是,赋值给res[0]。
二分法求右边界:
当中点大于target,end移向中点,否则start移向中点;
先判断终点,再判断起点是否等于target,如果是,赋值给res[1]
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
if(nums.size() == 0)
{
return vector<int>(2, -1);
}
vector<int> result;
int begin = 0;
int end = nums.size()-1;
int mid;
while(begin < end)
{
mid = (begin + end) / 2;
if(target > nums[mid])
{
begin = mid + 1;
}
else
{
end = mid;
}
}
if(nums[begin] != target)
{
return vector<int>(2, -1);
}
result.push_back(begin);
end = nums.size()-1;
while(begin < end)
{
if(begin == end - 1)
{
if(target == nums[end])
{
break;
}
else
{
end = end - 1;
break;
}
}
mid = (begin + end) / 2;
if(target == nums[mid])
{
begin = mid;
}
else
{
end = mid - 1;
}
}
result.push_back(end);
return result;
}
};
int main()
{
int a[6] = {8, 8, 8, 8, 8, 9};
vector<int> test(a, a+6);
Solution ss;
vector<int> result = ss.searchRange(test, 9);
cout << result[0] << "," << result[1] << endl;
return 0;
}
相关文章推荐
- 338. Counting Bits **
- HDU 4972 A simple dynamic programming problem
- Counting Bits——Difficulty:Medium
- a problem solved by dynamic programming and some ideals
- UESTC_邱老师选妹子(二) 2015 UESTC Training for Dynamic Programming<Problem I>
- 第十周(Dynamic ProgrammingIV)
- leetcode Ch2-Dynamic Programming II
- 论文读书笔记-Approximate Dynamic Programming for Storage Problems
- 392. Is Subsequence | LeetCode Dynamic Programming
- Light OJ Dynamic Programming
- 十四周 dynamic programming Minimum Path Sum
- HDU - 4972 A simple dynamic programming problem (14多校)思维
- The journey of Ural dynamic programming
- 2016 UESTC Training for Dynamic Programming F - 柱爷与三叉戟不得不说的故事 压位dp
- LeetCode - Fibonacci Sequence/Dynamic Programming - Climbing Stairs
- HDOJ 4972 A simple dynamic programming problem
- compute Binomial Coefficient or combinations with dynamic programming
- 2015 UESTC Training for Dynamic Programming N - 导弹拦截(LIS (nlogn))
- UESTC_男神的约会 2015 UESTC Training for Dynamic Programming<Problem J>
- Dynamic Programming Solution to Activity Selection Problem