zoukankan      html  css  js  c++  java
  • LeetCode 69 x的平方根

    LeetCode 69 x的平方根

    问题描述:
      实现 int sqrt(int x) 函数。
      计算并返回 x 的平方根,其中 x 是非负整数。
      由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

    执行用时:2 ms, 在所有 Java 提交中击败了63.01%的用户
    内存消耗:35.9 MB, 在所有 Java 提交中击败了83.23%的用户

    暴力二分:

    1. 对[1,x-1]区间直接采用二分进行暴力搜索
    2. 平方根取到整数位,因此要采用mid、mid+1两个值来与目标值x对比
      • Math.pow(mid, 2)<=x && Math.pow(mid+1, 2)>=x则返回mid、mid+1中的一个
    /**
     * @author CodeSPA
     * @date 2020/5/27 - 18:55
     */
    class Solution {
        public int mySqrt(int x) {
            if(x<=1) {
                return x;
            }
            //1. 暴力法,直接在[1,x-1]的范围内二分查找寻找
            //结果向下取整
            int left = 1, right = x-1;
            int mid = left + (right-left)/2;
            long curr = 0, next = 0;
            while(left<right) {
                curr = (long)Math.pow(mid, 2);
                next = (long)Math.pow(mid+1, 2);
                if(curr<=x && next>=x) {
                    break;
                }
                else if(curr>x) {
                    right = mid-1;
                }
                else if(next<x){
                    left = mid+1;
                }
                mid = left + (right-left)/2;
            }
    
            return next==x? mid+1: mid;
        }
    }
    
  • 相关阅读:
    线程、协程、Goroutine的区别和联系
    Docker是如何实现跨平台的等问题
    Docker容器与虚拟机有什么区别?
    带www和不带www的域名有什么区别
    netty 入门前阅读
    netty 入门示例
    thingsboard 入门教程
    RSAUtil 工具类
    java zip 打包
    redis 详细讲解
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13684790.html
Copyright © 2011-2022 走看看