Clear, Intuitive - Beats 100%
\nclass Solution {\n    public long minSum(int[] nums1, int[] nums2) {\n        //sumA range: [sumA, +infinity) or [sumA, sumA]\n        long sumA = 0, sumB = 0
```\nclass Solution {\n    public long minSum(int[] nums1, int[] nums2) {\n        //sumA range: [sumA, +infinity) or [sumA, sumA]\n        long sumA = 0, sumB = 0;\n        int countA = 0, countB = 0;\n        for (int num : nums1) {\n            sumA += Math.max(1, num);\n            if (num == 0) {\n                countA++;\n            }\n        }\n        \n        for (int  num : nums2) {\n            sumB += Math.max(1, num);\n            if (num == 0) {\n                countB++;\n            }\n        }\n        \n        if (countA == 0 && sumB > sumA) {\n            return -1;\n        }\n        \n        if (countB == 0 && sumA > sumB) {\n            return -1;\n        }\n        \n        return Math.max(sumA, sumB);\n    }\n}\n\n//tc: O(n)\n//sc: O(1)\n```
['Greedy', 'Java']