Share leetcode 704 c++,

#LeetCode #C ++ #BinarySearch #Array

Đưa ra một loạt các số nguyên được sắp xếp theo thứ tự tăng dần, tìm vị trí bắt đầu và kết thúc của một giá trị mục tiêu nhất định.

Độ phức tạp thời gian chạy của thuật toán của bạn phải theo thứ tự O (log n).

**Ví dụ 1:**

`` `
Đầu vào: nums = [5, 7, 7, 8, 8, 10], Target = 8
Đầu ra: [3, 4]
`` `

** Ví dụ 2: **

`` `
Đầu vào: nums = [5, 7, 7, 8, 8, 10], Target = 6
Đầu ra: [-1, -1]
`` `

**Giải pháp:**

`` `C ++
Giải pháp lớp {
công cộng:
Vector <Int> searchRange (Vector <Int> & Nums, int Target) {
int n = nums.size ();
int trái = 0, phải = n - 1;
int start = -1, end = -1;

while (trái <= phải) {
int mid = trái + (phải - trái) / 2;
if (nums [mid] == target) {
bắt đầu = giữa;
Phải = giữa - 1;
} if if (nums [mid] <target) {
trái = mid + 1;
} khác {
Phải = giữa - 1;
}
}

trái = 0;
Phải = n - 1;

while (trái <= phải) {
int mid = trái + (phải - trái) / 2;
if (nums [mid] == target) {
kết thúc = mid;
trái = mid + 1;
} if if (nums [mid] <target) {
trái = mid + 1;
} khác {
Phải = giữa - 1;
}
}

trả về {start, end};
}
};
`` `

** Hashtags: **

* LeetCode
* C ++
* Tìm kiếm nhị phân
* mảng
* lập trình năng động
=======================================
#LeetCode #C++ #BinarySearch #Array #dynamicprogramming ### Leetcode 704 C++: Binary Search

Given an array of integers nums sorted in ascending order, 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).

**Example 1:**

```
Input: nums = [5, 7, 7, 8, 8, 10], target = 8
Output: [3, 4]
```

**Example 2:**

```
Input: nums = [5, 7, 7, 8, 8, 10], target = 6
Output: [-1, -1]
```

**Solution:**

```c++
class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int n = nums.size();
int left = 0, right = n - 1;
int start = -1, end = -1;

while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
start = mid;
right = mid - 1;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}

left = 0;
right = n - 1;

while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
end = mid;
left = mid + 1;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}

return {start, end};
}
};
```

**Hashtags:**

* leetcode
* c++
* binary search
* array
* dynamic programming
 
Join Telegram ToolsKiemTrieuDoGroup
Back
Top