zoukankan      html  css  js  c++  java
  • 1346. 检查整数及其两倍数是否存在

    给你一个整数数组 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;
        }
    }
    

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

  • 相关阅读:
    大数加法、乘法实现的简单版本
    hdu 4027 Can you answer these queries?
    zoj 1610 Count the Colors
    2018 徐州赛区网赛 G. Trace
    1495 中国好区间 尺取法
    LA 3938 动态最大连续区间 线段树
    51nod 1275 连续子段的差异
    caioj 1172 poj 2823 单调队列过渡题
    数据结构和算法题
    一个通用分页类
  • 原文地址:https://www.cnblogs.com/Duancf/p/12405223.html
Copyright © 2011-2022 走看看