当前位置: 首页 > wzjs >正文

网站设计模板 优帮云营销型网站建设需要多少钱

网站设计模板 优帮云,营销型网站建设需要多少钱,宝格丽网站建设,深圳最新消息公布title: 2025-05-07-二分查找 tags: 算法学习 2025-05-07-二分查找 参考博客 代码随想录 使用二分法的前提条件 元素有序且不重复 希望通过这道题目,大家会发现平时写二分法,为什么总写不好,就是因为对区间定义不清楚。 确定要查找的区间到…

title: 2025-05-07-二分查找
tags: 算法学习

2025-05-07-二分查找

参考博客
代码随想录

使用二分法的前提条件

  • 元素有序且不重复

希望通过这道题目,大家会发现平时写二分法,为什么总写不好,就是因为对区间定义不清楚。

确定要查找的区间到底是左闭右开[left, right),还是左闭又闭[left, right],这就是不变量。

然后在二分查找的循环中,坚持循环不变量的原则,很多细节问题,自然会知道如何处理了。

704. 二分查找 - 力扣(LeetCode)

解法一采用闭区间的二分

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

解法二 采用左闭右开的区间进行二分

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

35. 搜索插入位置 - 力扣(LeetCode)

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

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)

灵茶山艾府题解

官方题解

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

69. x 的平方根 - 力扣(LeetCode)

参考博客

求整数平方根算法-CSDN 博客

IEEE 754_IEEE 二进制浮点数算术标准

二分


class Solution
{
public:
int mySqrt(int x)
{
int left = 0, right = x;
while(left <=right){
long long mid = left + (right - left) / 2;
if(mid * mid <= x){
left = mid + 1;
}
else{
right = mid - 1;
}
}
return right;
}
};

牛顿迭代法

// f(x) = x^2 - C_
// f'(x) = 2x_// f(x) = 0 的解为 x = sqrt(C)_
// f(x) ~= f(x0) + f'(x0)(x - x0)_
//  0 = x0^2 - C + 2x0(x - x0)_
//  x = (C - x0^2) / 2x0 + x0 = (x0 + C / x0) / 2_class Solution
{
public:int mySqrt(int x){if(x == 0)return 0;long x0 = x;while(x0 * x0 > x){x0 = (x0 + x / x0) / 2;}return (int)x0;}
};

神奇的 0x5f3759df

// 使用快速平方根算法(Fast Inverse Square Root)的变体_
// 0x5f3759df 是一个魔法数字,用于快速估计平方根_
class Solution
{
public:
int mySqrt(int x)
{// 使用 long 类型避免整数溢出_
long x0 = x;// 使用魔法数字进行快速估计_// x0>>1 相当于除以 2,用于快速估计_
x0 = 0x5f3759df - (x0>>1);// 使用牛顿迭代法进行精确化_// 迭代公式:x = (x + n/x) / 2_
while (x0 * x0 > x)
{
x0 = (x0 + x / x0) / 2;
}
return (int)x0;
}
};

位运算

_// 使用位运算求解x的算术平方根_
int mySqrt(int x)
{
_    // m初始化为2^30,用于逐位检查_unsigned m = 0x40000000, y = 0, b = 0;while (m != 0){
_        // 计算当前位可能的平方值_b = y | m;
_        // y右移一位,为下一位做准备_y = y >> 1;
_        // 如果x大于等于当前平方值,说明该位可以取1_if (x >= b){
_            // 更新x的值_x = x - b;
_            // 将当前位设为1_y = y | m;}
_        // m右移两位,检查下一位_m = m >> 2;}return y;
}

袖珍计算器(使用 exp 与 ln 函数进行求解)

使用 x = e 1 2 l n x \sqrt{x} = e^{\frac{1}{2}lnx} x =e21lnx


#include <cmath>_// 使用数学公式求解 x 的算术平方根_
_// 利用公式:sqrt(x) = e^(0.5 * ln(x))_
class Solution
{
public:
int mySqrt(int x)
{
_        // 处理特殊情况:x 为 0 时直接返回 0_
if(x == 0)
return 0;
_        // 使用 exp 和 log 函数计算平方根_
_        // exp(0.5 * log(x)) = e^(0.5 * ln(x)) = sqrt(x)_
int res = exp(0.5 * log(x));
return (long long)(res + 1) * (res + 1) <= x ? res + 1 : res;
}
};

367. 有效的完全平方数 - 力扣(LeetCode)

与前面的题非常相似


class Solution
{
public:
bool isPerfectSquare(int num)
{
int left = 0, right = num;
while(left <= right){
long long mid = left + (right - left) / 2;
if(mid * mid == num)
return true;
else if(mid * mid < num)
left = mid + 1;
else
right = mid - 1;
}
return false;
}
};
http://www.dtcms.com/wzjs/302798.html

相关文章:

  • 南京网站网站建设公司高端网站建设公司排行
  • 国外试用网站空间百度识图鉴你所见
  • 做网站的服务器有哪些3d建模培训班一般多少钱
  • 网站建设 合肥怎么做ppt
  • 在线视频网站开发方案php优化快速排名公司
  • 下载app软件商店seo站内优化培训
  • 租车网站开发域名seo站长工具
  • 信誉好的邢台做网站网站seo招聘
  • 济南网站制做竞价推广培训课程
  • 四川省信用建设促进会网站公司seo推广营销网站
  • 做本地的分类信息网站网站怎样做推广
  • 深圳网站建设 乐云践新湖州网站seo
  • 互动网站欣赏刘连康seo培训哪家强
  • 商务网站设计与开发seo黑帽教程视频
  • 广州app开发网站建设成都网络推广外包
  • 厦门住房建设局网站今日发生的重大新闻
  • 国外企业网站设计欣赏百度seo培训课程
  • 淘宝客做的比较好的网站南昌seo数据监控
  • 企业营销型网站费用网站推广郑州
  • 个人 网站建设方案书 备案湖南正规seo公司
  • 河南民基建设工程有限公司网站微信广告
  • 不再单独建设政府网站惠州seo建站
  • 网站建设的实验心得体会重庆seo招聘
  • wordpress 众筹网站南京网站设计
  • 网站建设色调的网络营销策略的定义
  • 比较好看的企业网站百度seo
  • 网赌赢了钱被网站黑了需要怎么做软文范文
  • 专业云南做网站qq推广工具
  • 响水做网站的seo搜索是什么
  • 网站建设的最新技术新平台推广