141. Sqrt(x)【牛顿迭代法求平方根 by java】
Description
Implement int sqrt(int x).
Compute and return the square root of x.
Example
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
Challenge
O(log(x))
题意:求给定数的平方根,如果用一般的方法,例如二分法之类的,需要考虑一下int型的范围,别溢出。最好的方法时牛顿迭代法。代码如下:
public class Solution {
    /**
     * @param x: An integer
     * @return: The sqrt of x
     */
    public int sqrt(int x) {
        // write your code here
       //牛顿迭代法求平方根
       double p=2.0;
       double pre=0;
       while(Math.abs(p-pre)>1e-6){
           pre=p;
           p=(p+x/p)/2.0;
       }
       return (int)p;
    }
}
关于牛顿迭代法在平方根上的应用原理,参阅博客: http://www.matrix67.com/blog/archives/361
141. Sqrt(x)【牛顿迭代法求平方根 by java】的更多相关文章
- C语言之基本算法11—牛顿迭代法求平方根
		//迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1 ... 
- Java实现牛顿迭代法求解平方根、立方根
		一.简介 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法. ... 
- ytu 1041: 迭代法求平方根(水题)
		1041: 迭代法求平方根 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 227 Solved: 146[Submit][Status][Web Bo ... 
- 【清橙A1094】【牛顿迭代法】牛顿迭代法求方程的根
		问题描述 给定三次函数f(x)=ax3+bx2+cx+d的4个系数a,b,c,d,以及一个数z,请用牛顿迭代法求出函数f(x)=0在z附近的根,并给出迭代所需要次数. 牛顿迭代法的原理如下(参考下图) ... 
- YTU 2405: C语言习题 牛顿迭代法求根
		2405: C语言习题 牛顿迭代法求根 时间限制: 1 Sec 内存限制: 128 MB 提交: 562 解决: 317 题目描述 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b ... 
- 【Java例题】4.4使用牛顿迭代法求方程的解
		4. 使用牛顿迭代法求方程的解:x^3-2x-5=0区间为[2,3]这里的"^"表示乘方. package chapter4; public class demo4 { publi ... 
- 数学相关比较 牛顿迭代法求开方  很多个n的平方分之一
		牛顿迭代法求开方 牛顿迭代法 作用: 求f(x) = 0 的解 方法:假设任意一点 x0, 求切线与x轴交点坐标x1, 再求切线与x轴交点坐标x2,一直重复,直到f(xn) 与0的差距在一个极小的范围 ... 
- 牛顿迭代法--求任意数的开n次方
		牛顿迭代法是求开n次方近似解的一种方法,本文参考. 引言 假如\(x^n = m\),我们需要求x的近似值. 我们设\(f(x) = x^n - m\), 那么也就是求该函数f(x)=0时与x轴的交点 ... 
- JustOj 1036: 习题6.11 迭代法求平方根
		题目描述 用迭代法求 .求平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001. 输出保留3位小数 输入 X 输出 X的平方根 样例输 ... 
随机推荐
- 乘风破浪:LeetCode真题_020_Valid Parentheses
			乘风破浪:LeetCode真题_020_Valid Parentheses 一.前言 下面开始堆栈方面的问题了,堆栈的操作基本上有压栈,出栈,判断栈空等等,虽然很简单,但是非常有意义. 二.Valid ... 
- 乘风破浪:LeetCode真题_002_Add Two Numbers
			乘风破浪:LeetCode真题_002_Add Two Numbers 一.前言 这次的题目是关于链表方面的题目,把两个链表对应节点相加,还要保证进位,每个节点都必须是十进制的0~9.因此主要 ... 
- LNMP-day3-php扩展缓存插件
			perl的编译问题 [root@localhost php5.6.33]# echo 'export LC_ALL=C' >> /etc/profile #设置环境变量,解决后面perl ... 
- Java编程规范[转]
			目录 1 概述.... 5 1.1 目标:.... 5 1.2 原则:.... 5 2 Java编程命名规范.... 5 2.1 包的命名标准.. ... 
- [SDOI2016]数字配对
			题目 发现要求配对的条件是这样 \[a_j|a_i,\frac{a_i}{a_j}=p_1\] 我们考虑一下再来一个\(a_k\),满足 \[a_k|a_j,\frac{a_j}{a_k}=p_2\] ... 
- 【[HAOI2015]树上染色】
			这道题真是非常神仙 第一眼看到题面肯定能想到状态是\(dp[i][j]\)表示\(i\)这棵子树里染了\(j\)个黑点的最大值 最大值? 什么最大值,之后就会发现这个样子完全没有办法转移 所以我们考虑 ... 
- Python3安装scrapy框架步骤
			Python3安装scrapy框架步骤 1. 安装wheel a) Pip install wheel 2. 安装lxml Pip install lxml 3. ... 
- ssrf绕过记录
			第一道题来自2018 上海市大学生网络安全大赛线上赛web01 if(isset($_POST['url']) && parse_url($_POST['url'])['host']= ... 
- 日期字符串解析--SimpleDateFormat严格限制日期转换setLenient(false)
			输入“33/12/2011”,用SimpleDateFormat parse()方法,转化为Date(2012,01,02).这样处理相当“33/12/2011”是正常输入,如果需要"33/ ... 
- 浅谈MVP架构及开发模式
			Model-View-Presenter(MVP)概述 MVC模式已经出现了几十年了,在GUI领域已经得到了广泛的应用,由于微软ASP.NET MVC Framework的出现,致使MVC一度成 ... 
