LeetCode第633题:两数平方和

149 阅读1分钟

题干

给定一个非负整数 c ,你要判断是否存在两个整数 ab,使得 a2 + b2 = c

注意:力扣的测试时会将一个整数的情况也算进去,这里需要处理一下

解法:双指针

思想:非负整数平方和可能存在的数为它之前的数,而之前的数都是有序的,因此可以考虑双指针。但是需要注意的是为了防止超时我们需要对右指针进行剪枝(开平方根)

执行用时:92 ms, 在所有 JavaScript 提交中击败了69.78%的用户

内存消耗:37.8 MB, 在所有 JavaScript 提交中击败了89.03%的用户

  var judgeSquareSum = function (c) {
    let begin = 0;
    let end =Math.floor(Math.sqrt(c));
    while (begin <= end) {
        let temptarget = (begin * begin) + (end * end)
        if (temptarget > c) {
            end-=1
        } else if (temptarget < c) {
            begin += 1;
        } else {
            return true
        }
    }
    return false
  };