美文网首页计算机Leetcode, again
Leetcode - Maximum Product of Wo

Leetcode - Maximum Product of Wo

作者: Richardo92 | 来源:发表于2016-10-14 10:36 被阅读6次

    My code:

    public class Solution {
        public int maxProduct(String[] words) {
            int max = 0;
            int len = words.length;
            int[] bits = new int[len];
            for (int i = 0; i < len; i++) {
                for (int j = 0; j < words[i].length(); j++) {
                    bits[i] |= 1 << (words[i].charAt(j) - 'a');
                }
            }
            
            for (int i = 0; i < len; i++) {
                for (int j = i + 1; j < len; j++) {
                    if ((bits[i] & bits[j]) == 0) {
                        max = Math.max(max, words[i].length() * words[j].length());
                    }
                }
            }
            
            return max;
        }
    }
    

    reference:
    https://discuss.leetcode.com/topic/35539/java-easy-version-to-understand

    这道题目我一开始的做法就是申请一个
    boolean[] dict = new boolean[26];

    下面是我的代码:
    My code:

    public class Solution {
        public int maxProduct(String[] words) {
            int max = 0;
            for (int i = 0; i < words.length; i++) {
                boolean[] dict = new boolean[26];
                for (int k = 0; k < words[i].length(); k++) {
                    dict[words[i].charAt(k) - 'a'] = true;
                }
                
                for (int j = i + 1; j < words.length; j++) {
                    if (words[j].length() <= max / words[i].length()) {
                        continue;
                    }
                    boolean doesIntersect = false;
                    for (int k = 0; k < words[j].length(); k++) {
                        if (dict[words[j].charAt(k) - 'a']) {
                            doesIntersect = true;
                            break;
                        }
                    }
                    if (!doesIntersect) {
                        max = Math.max(max, words[i].length() * words[j].length());
                    }
                }
            }
            
            return max;
        }
    }
    

    然后也尽量剪枝了。但还是很慢。
    看了答案后,发现是用 Bit manipulation 做,真的很巧妙。

    Anyway, Good luck, Richardo! -- 10/13/2016

    相关文章

      网友评论

        本文标题:Leetcode - Maximum Product of Wo

        本文链接:https://www.haomeiwen.com/subject/sbpgyttx.html