982. Triples with Bitwise AND Equal To Zero

Difficulty:
Related Topics:
Similar Questions:

    Problem

    Given an integer array nums, return **the number of *AND triples***.

    An AND triple is a triple of indices (i, j, k) such that:

      Example 1:

    Input: nums = [2,1,3]
    Output: 12
    Explanation: We could choose the following i, j, k triples:
    (i=0, j=0, k=1) : 2 & 2 & 1
    (i=0, j=1, k=0) : 2 & 1 & 2
    (i=0, j=1, k=1) : 2 & 1 & 1
    (i=0, j=1, k=2) : 2 & 1 & 3
    (i=0, j=2, k=1) : 2 & 3 & 1
    (i=1, j=0, k=0) : 1 & 2 & 2
    (i=1, j=0, k=1) : 1 & 2 & 1
    (i=1, j=0, k=2) : 1 & 2 & 3
    (i=1, j=1, k=0) : 1 & 1 & 2
    (i=1, j=2, k=0) : 1 & 3 & 2
    (i=2, j=0, k=1) : 3 & 2 & 1
    (i=2, j=1, k=0) : 3 & 1 & 2
    

    Example 2:

    Input: nums = [0,0,0]
    Output: 27
    

      Constraints:

    Solution

    class Solution {
        public int countTriplets(int[] nums) {
            int[] arr = new int[1 << 17];
            for (int num : nums) {
                int mask = 0;
                for (int i = 0; i < 16; i++) {
                    if ((num & (1 << i)) == 0) {
                        mask |= (1 << i);
                    }
                }
                int s = mask;
                while (s > 0) {
                    arr[s]++;
                    s = (s - 1) & mask;
                }
            }
            int count = 0;
            for (int j : nums) {
                for (int num : nums) {
                    int val = j & num;
                    if (val == 0) {
                        count += nums.length;
                    } else {
                        int mask = 0;
                        for (int k = 0; k < 16; k++) {
                            if ((val & (1 << k)) > 0) {
                                mask |= (1 << k);
                            }
                        }
                        count += arr[mask];
                    }
                }
            }
            return count;
        }
    }
    

    Explain:

    nope.

    Complexity: