zoukankan      html  css  js  c++  java
  • LC 954. Array of Doubled Pairs

    Given an array of integers A with even length, return true if and only if it is possible to reorder it such that A[2 * i + 1] = 2 * A[2 * i] for every 0 <= i < len(A) / 2.

     

     

    Example 1:

    Input: [3,1,3,6]
    Output: false
    

    Example 2:

    Input: [2,1,2,6]
    Output: false
    

    Example 3:

    Input: [4,-2,2,-4]
    Output: true
    Explanation: We can take two groups, [-2,-4] and [2,4] to form [-2,-4,2,4] or [2,4,-2,-4].
    

    Example 4:

    Input: [1,2,4,16,8,4]
    Output: false
    

     

    Note:

    1. 0 <= A.length <= 30000
    2. A.length is even
    3. -100000 <= A[i] <= 100000

    Runtime: 84 ms, faster than 81.90% of C++ online submissions for Array of Doubled Pairs.

    挺简单的一道median,但是要注意一些细节,

    1. 0 ,正数,负数,分开考虑。

    2. 去重前需要排序。

    #define ALL(x) (x).begin(),(x).end()
    #include <vector>
    #include <unordered_map>
    #include <algorithm>
    using namespace std;
    
    class Solution {
    public:
      bool canReorderDoubled(vector<int>& A) {
        vector<int> positive;
        vector<int> negative;
        int zerocnt = 0;
        for(auto x : A) {
          if(x == 0) zerocnt++;
        }
        if(zerocnt&1 == 1) return false;
        for(auto x : A) {
          if(x > 0) positive.push_back(x);
          else negative.push_back(-x);
        }
        return helper(positive) && helper(negative);
      }
      bool helper(vector<int>& A) {
        unordered_map<int,int> map;
        for(auto x : A) map[x]++;
        vector<int> idA;
        sort(ALL(A));
        for(int i=0; i<A.size(); i++){
          if(i == 0 || idA.back() != A[i]) idA.push_back(A[i]); 
        }
        //reverse(ALL(idA));
        //for(auto x : idA) cout << x << endl;
        for(auto x : idA) {
          //cout << x << endl;
          if(map[x] == 0) continue;
          if(!map.count(x<<1) || map[x<<1] < map[x]) return false;
          
          map[x<<1] -= map[x];
          //map[x] = 0;
        }
        return true;
      }
    };
  • 相关阅读:
    Yii调试插件yii-debug-toolbar的使用
    IE8不支持indexOf的解决办法
    使用wkhtmltopdf的一些事情
    mac sourcetree 启用 Beyond compare
    Java基础学习之(5)--impact和package
    Java基础学习之(3)--面向对象2--重载
    Java基础学习之(4)--面向对象3--this+static关键字
    Java基础学习之(2)--面向对象1
    Java基础学习之(1)--标识符、关键字、数据类型
    java学习(7)iterator迭代器
  • 原文地址:https://www.cnblogs.com/ethanhong/p/10177221.html
Copyright © 2011-2022 走看看