您的位置 首页 编程语言

Define a square pair to be the tuple where x and y are positive, non-zero integers, x

美国面试题3

1. 题目:

 

Define a square pair to be the tuple <x, y> where x and y are positive, non-zero integers, x<y and x + y is a perfect square. A perfect square is an integer whose square root is also an integer, e.g. 4, 9, 16 are perfect squares but 3, 10 and 17 are not. Write a function named countSquarePairs that takes an array and returns the number of square pairs that can be constructed from the elements in the array. For example, if the array is {11, 5, 4, 20} the function would return 3 because the only square pairs that can be constructed from those numbers are <5, 11>,
<5, 20> and <4, 5>. You may assume that there exists a function named isPerfectSquare that returns 1 if its argument is a perfect square and 0 otherwise. E.G., isPerfectSquare(4) returns 1 and isPerfectSquare(8) returns 0.
If you are programming in Java or C#, the function signature is
int countSquarePairs(int[ ] a)
If you are programming in C++ or C, the function signature is
int countSquarePairs(int a[ ], int len) where len is the number of elements in the array.
You may assume that there are no duplicate values in the array, i.e, you don’t have to deal with an array like {2, 7, 2, 2}.

 

2. 测试用例:

 

3. 程序代码:

public class SquarePairs {
    public static void main(String[] args) {

//        System.out.println(isPerfectSquare(8));
//        int a[] = {9,0,2,-5,7};
//        int a[] = {9};
        int a[] = {2, 7, 2, 2};
        System.out.println(countSquarePairs(a));
    }

    public static int countSquarePairs(int[ ] a){

        int length = a.length;
        if (length < 2){
            return 0;
        }
        int countsq=0;
        for (int i=0; i< length; i++){
            for (int j=0; j< length; j++){
                if (i!=j){
                    if(a[i]==a[j]){
                        return 0;
                    }
                    if((a[i] < a[j] && isPerfectSquare(a[i]+a[j]) ) && a[i]>0 && a[j]>0 ){
                        System.out.println("ai"+a[i]);
                        System.out.println("aj"+a[j]);
                         countsq++;

                    }
                }
            }
        }

        return countsq;
    }

    /**
     * 判断是不是能开平方根,是否为完全平方数
     * @param a
     * @return
     */
    public static boolean isPerfectSquare(int a){

       double k = Math.sqrt(a);
        int m = (int)k; //
        if( m - k == 0){
            return true;
        }

        return false;
    }
}

猫叔总结了 适合新手操作的副业 《淘宝虚拟产品月入2万的 6个 细分类目》的电子书 仅供参考

如果你对虚拟产品比较感兴趣,可以点击:

淘宝卖什么虚拟产品赚钱(月入2万+)

hadoopall

关于花猫大叔短视频创业 作者: hadoopall

热门文章

发表评论

电子邮件地址不会被公开。