zoukankan      html  css  js  c++  java
  • LeetCode 633. 平方数之和

    题目:

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

         示例1:

    输入: 5

    输出: True

    解释: 1 * 1 + 2 * 2 = 5

      示例2:

    输入: 3

    输出: False

    思路:

      利用双指针思想,左指针置0,右指针置目标值平方根向下取整。两指针平方和比较:

    • 小于目标值,右指针左移;
    • 大于目标值,左指针右移;
    • 等于目标值,判断结束

      若循环结束未找到平方和与目标值相同的情况,则不存在。 

    代码:

    public class P633 {
        public boolean judgeSquareSum(int c) {
            if (c < 0) {
                return false;
            }
            int left = 0;
            int right = (int) Math.sqrt(c);
            int curSum;
            while (left < right) {
                curSum = left * left + right * right;
                if (curSum > c) {
                    right--;
                } else if (curSum < c) {
                    left++;
                } else {
                    return true;
                }
            }
            return false;
        }
    }
  • 相关阅读:
    woj 1574
    UESTC 594 我要长高 dp单调队列
    HDU 3401 Trade dp 单调队列优化
    HDU 2844 Coins 多重背包
    2-1
    1-2
    1-1
    12-1
    9-1
    14-8
  • 原文地址:https://www.cnblogs.com/xiaoxt/p/10646804.html
Copyright © 2011-2022 走看看