leetcode 367. 有效的完全平方数
发布日期:2021-05-14 09:10:56 浏览次数:16 分类:精选文章

本文共 2661 字,大约阅读时间需要 8 分钟。

������������������������������������������������

������������

��������������������� num���������������������������������������������������������������������������������������������������������������������������������������16 = 4^2 ������������������������ 28 ������������������������

������������

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������� f(x) = x^2 - num��������������������������� x0 = num / 2��������������� f(x) = 0 ���������

������������

  • ���������������������

    • ������ num = 1 ��� 4��������������� True������������������������ 1^2 ��� 2^2���
    • ������ num ������ 4��������������������������������������� False���
  • ������������

    • ��������������� x0 = num / 2���
  • ���������������������

    • ��������������������� x ��������� x^2 ��� num���������
      • ��������������������� x_{k+1} = (x_k + num / x_k) / 2���
      • ������ x_{k+1}^2 ������������ num��������� True���
      • ������ x_{k+1}^2 ������ num���������������������������������������������������
  • ���������������

    • ��������������������� x^2 ��� num ��������������������� num ������������������������������ False���
  • ������������

    public class Solution {
    public boolean isPerfectSquare(int num) {
    if (num == 1 || num == 4) return true;
    if (num < 4) return false;
    long x = num / 2;
    while (x * x > num) {
    x = (x + num / x) / 2;
    }
    return x * x == num;
    }
    }

    ������������

    ��������������������������������������������������������������������������� f(x) = x^2 - num ��������������������� f'(x) = 2x������������������������������������������������������ x_{k+1} ������������������

    [ x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)} = \frac{x_k + \frac{num}{x_k}}{2} ]

    ���������f(x_k) = x_k^2 - num���f'(x_k) = 2x_k������������������������������������������

    ��������� x0 = num / 2 ��������������������������������������������������������������������� x^2 ������������������������������

    ������������������������������������������������������ x ������������ x^2 ������������ num������������ num ���������������������������

    ���������������

    ������������������������������������������������������������������������������������������������������������������������������������������������������������������ O(1)���������������������������������������������������������������������������

    ������������

    ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Math.sqrt ���������������������������������������������������������������������������������������

    上一篇:leetcode 331. 验证二叉树的前序序列化
    下一篇:leetcode 227. 基本计算器 II

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年04月09日 03时04分40秒