leetcode 69 x 的平方根 牛顿迭代法
简介
简单的题, 直接上代码.
其实还挺复杂的.
参考链接
https://leetcode-cn.com/problems/sqrtx/solution/x-de-ping-fang-gen-by-leetcode-solution/
code
class Solution {
public:
int mySqrt(int x) {
return sqrt(x);
}
};
class Solution {
public int mySqrt(int x) {
return (int)Math.sqrt(x);
}
}
袖珍计算器法
其实是数学推导, 其实我还没怎么用过exp来进行计算和log
\]
class Solution {
public:
int mySqrt(int x) {
if(x == 0) {
return 0;
}
int ans = exp(0.5 * log(x));
return ((long long)(ans + 1) * (ans + 1) <= x ? ans + 1 : ans);
}
};
二分查找
class Solution {
public:
int mySqrt(int x) {
int l = 0, r = x, ans = -1;
while (l <= r) {
int mid = l + (r - l) / 2;
if ((long long)mid * mid <= x) {
ans = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
return ans;
}
};
牛顿法
牛顿迭代法本质上是使用了泰勒级数的思想, 不过, 我不是特别清楚. 但是, 看了图片, 可知还是比较清晰的. 可以看参考链接
看了代码我们有了更深刻的理解
其实我们构建了一个函数
\]
其中\(C\)的初值设定为 输入的数 \(x_0\)
如果要这个方程\(f(x_0) == 0\) 的话, 其解 \(x_{解} = \sqrt{x_0}\)
然后我们又构建了一个直线函数求\(f(x)\)求导后的直线与\(y = 0\)的交点, 当两次的点的变化很接近的时候,就是我们想要的解的范围.
class Solution {
public:
int mySqrt(int x) {
if(x == 0) {
return 0;
}
double C = x, x0 = x;
while(true){
double xi = 0.5 * (x0 + C/x0);
if(fabs(x0 - xi) < 1e-7){
break;
}
x0 = xi;
}
return int(x0);
}
};
leetcode 69 x 的平方根 牛顿迭代法的更多相关文章
- [LeetCode]69. x 的平方根(数学,二分)
题目 https://leetcode-cn.com/problems/sqrtx 题解 方法一:牛顿迭代法 按点斜式求出直线方程(即过点Xn,f(Xn)),然后求出直线与x轴交点,即为Xn+1: 求 ...
- Java实现 LeetCode 69 x的平方根
69. x 的平方根 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: ...
- [leetcode] 69. x 的平方根(纯int溢出判断实现)
69. x 的平方根 非常简单的一个题,用二分法逼近求出ans即可,额外注意下溢出问题. 不过我要给自己增加难度,用long或者BigNum实现没意思,只能使用int类型 换句话当出现溢出时我们自己得 ...
- LeetCode 69 x 的平方根
链接:https://leetcode-cn.com/problems/sqrtx 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数, ...
- 字节笔试题 leetcode 69. x 的平方根
更多精彩文章请关注公众号:TanLiuYi00 题目 解题思路 题目要求非负整数 x 的平方根,相当于求函数 y = √x 中 y 的值. 函数 y = √x 图像如下: 从上图中,可以看出函数是单 ...
- C++版 - Leetcode 69. Sqrt(x) 解题报告【C库函数sqrt(x)模拟-求平方根】
69. Sqrt(x) Total Accepted: 93296 Total Submissions: 368340 Difficulty: Medium 提交网址: https://leetcod ...
- [LeetCode] 69. Sqrt(x) 求平方根
Implement int sqrt(int x). Compute and return the square root of x, where x is guaranteed to be a no ...
- 牛顿迭代法的理解与应用( x 的平方根)
题目来源与LeetCode算法题中的第69题,具体内容如下(点击查看原题): 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只 ...
- sqrt()平方根计算函数的实现2——牛顿迭代法
牛顿迭代法: 牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特 ...
- 141. Sqrt(x)【牛顿迭代法求平方根 by java】
Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...
随机推荐
- java基础之函数式接口
一.函数式接口在Java中是指:有且仅有一个抽象方法的接口,所以函数式接口就是可以适用于Lambda使用的接口 二.自定义函数式接口 格式: @FunctionalInterface //该注解可省, ...
- 3d xna fbx winfrom 读取
本文通过参考网上资源做的一个例子. 本程序的功能就是通过xna 将3d 图像显示到winfrom 对他进行旋转操作. 首先我们先准备好两个文件夹 model 文件夹放fbx文件,textures 放 ...
- 揭秘 AI 工具的系统提示词「GitHub 热点速览」
这次的五一假期,你打卡了哪些好玩的地方?️ 无论身在何处,都别忘了每周二来咱们的「GitHub 热点速览」打卡!准时为你奉上最新.最热的开源项目! 如果你也曾对 Cursor 这类 AI 编程工具的强 ...
- Font Awesome文档使用手册
Font Awesome 字体为您提供可缩放矢量图标,它可以被定制大小.颜色.阴影以及任何可以用CSS的样式. 使用文档:https://fa4.uihtm.com/ Font Awesome 是一套 ...
- 补充(代码)-入门神经网络-Python 实现(下)
回顾 紧接着上篇, 整到了, MES的公式和代码的实现. \(MSE = \frac {1}{n} \sum\limits_{i=1}^n (y_i - \hat y_i)^2\) n 表示样本数, ...
- mp4文件下载,而不是在线播放
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 开源ERP系统 Odoo 18 介绍
开源ERP系统 Odoo 18 介绍 1. ERP 简介 企业资源计划(ERP,Enterprise Resource Planning)是一种集成软件系统,旨在帮助企业管理和优化业务流程.ERP 系 ...
- MySQL聚集索引与辅助索引的区别
聚集索引也称聚簇索引,英文为clustered index.从物理存储角度来分, 索引可以分为聚集索引和辅助索引(secondary index,也称作非聚簇索引),区别主要看叶子节点存了什么数 ...
- WPF与WinForm的对比
WPF与WinForm的对比 本文同时为b站WPF课程的笔记,相关示例代码 创建新项目 在vs2022中,这两者分别叫做WPF应用和Windows窗体应用. 渲染引擎和设计 WPF使用DirectX作 ...
- 华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
一.技术架构深度对比 1. 硬件基础设施 平台 自研芯片 分布式训练方案 边缘协同能力 华为MAAS 昇腾Ascend 910 + Atlas 900集群 MindSpore + HCCL(华为集合通 ...