首页 > 其他 > 详细

1346. 检查整数及其两倍数是否存在

时间:2020-03-03 23:07:55      阅读:62      评论:0      收藏:0      [点我收藏+]

给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。

更正式地,检查是否存在两个下标 i 和 j 满足:

i != j
0 <= i, j < arr.length
arr[i] == 2 * arr[j]

class Solution {
    public boolean checkIfExist(int[] arr) {
        int len = arr.length;
        List<Integer> Flist = new ArrayList<Integer>();
        List<Integer> Zlist = new ArrayList<Integer>();
        int i = 0;
        while(i < len)
        {
            if(arr[i] < 0)
            {
                Flist.add(-arr[i]);
            }
            else
            {
                Zlist.add(arr[i]);
            }
            i++;
        }
        int[] FArr = new int [Flist.size()];   //存储小于零的数组;
        int[] ZArr = new int [Zlist.size()]; //存储大于零的数组;
        for(int a = 0; a < Flist.size(); a++)
        {
            FArr[a] = Flist.get(a);
        }
        for(int b = 0; b < Zlist.size(); b++)
        {
            ZArr[b] = Zlist.get(b);
        }
        Arrays.sort(FArr);
        Arrays.sort(ZArr);
        // return Panduan(FArr);         
        if(!Panduan(ZArr) && !Panduan(FArr))
            return false;
        else
            return true;
 
    }
    public boolean Panduan(int[] arr)
    {
        boolean flag = true, returnFlag = false;
        int i = 0 , len = arr.length;
        if(arr.length > 1)
        {
            while(flag)
            {
                int tmpNum = arr[i] * 2;
                if(tmpNum > arr[len-1])
                {
                    flag = false;
                }
                for(int j = len-1; j > i; j--)
                {
                    if(tmpNum > arr[j])
                    {
                        break;
                    }
                    if(tmpNum == arr[j])
                    {
                        returnFlag = true;
                        flag = false;
                        break;
                    }
                }
                i++;

            }
            return returnFlag;
        }
        else
            return false;
    }
}

  我就是记录一下自己写的,不过方法不好,有更好的方法可以去借鉴。

1346. 检查整数及其两倍数是否存在

原文:https://www.cnblogs.com/Duancf/p/12405223.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!