两道二分法的简单小题

在这里插入图片描述

class Solution {
public:
	int search(vector<int>& nums, int target) {
		if (nums.size() == 0)return -1;
		int left = 0, right = nums.size() - 1;
		while (left <= right)
		{
			int mid = (left + right) / 2;
			if (nums[mid] == target)
				return mid;
			else
				if (nums[mid] < target)
				{
					left = mid + 1;
				}
				else
				{
					right = mid - 1;
				}
		}
		return -1;
	}
};

时间复杂度为:log2(n)
在这里插入图片描述

class Solution {
public:
	int search(vector<int>& nums, int target) {
		if (nums.size() == 0)return -1;
		int left = 0, right = nums.size() - 1;
		while (left <= right)
		{
			int mid = (left + right) / 2;
			if (nums[mid] == target)
				return mid;
			else
				if (nums[mid] < target)
				{
					left = mid + 1;
				}
				else
				{
					right = mid - 1;
				}
		}
		return left;
	}
};
发布了212 篇原创文章 · 获赞 4 · 访问量 8871

猜你喜欢

转载自blog.csdn.net/ShenHang_/article/details/104255481