赌钱赚钱官方登录每块砖的长度限度[1-澳门赌钱网-最新版

  • 首页
  • 关于我们
  • 产品中心
  • 新闻资讯
  • 在线招聘
  • 联系我们
  • 你的位置:澳门赌钱网-最新版 > 新闻资讯 > 赌钱赚钱官方登录每块砖的长度限度[1-澳门赌钱网-最新版
    赌钱赚钱官方登录每块砖的长度限度[1-澳门赌钱网-最新版
    发布日期:2024-10-18 05:50    点击次数:118

    赌钱赚钱官方登录每块砖的长度限度[1-澳门赌钱网-最新版

    把柄题意,墙的层数限度[1, 10^4]赌钱赚钱官方登录,关于每层,砖的数目[1, 10^4],每块砖的长度限度[1, 2^31 - 1]。

    最笨的圭臬,使用hash表纪录每层,在哪些长度不错进行分割(即砖之间的毛病在这层里处于什么位置)。轮回遍历每层,就不错获取每层哪些位置不错分割,value最大的,说明需要通过最少的砖wall.length - value

    class Solution { int max = 0; public int leastBricks(List<List<Integer>> wall) { Map<Long, Integer> map = new HashMap<>(); for (int i = 0; i < wall.size(); i++) { List<Integer> list = wall.get(i); long sum = 0; for (int j = 0; j < list.size() - 1; j++) { sum += list.get(j); map.put(sum, map.getOrDefault(sum, 0) + 1); } } map.forEach((key, value) -> { if (value > max) { max = value; } }); return wall.size() - max; }}

    按照上头的念念路,是会出现溢出的,因为可能的最大值是(10^4) * (2^31 - 1)。一运转我使用的Long去装,后头发现使用Integer亦然不错的。

    因为当 Java 发生溢出时,会奏凯转成负数来责罚。因此关于本题不会影响正确性(不重叠溢出的话)。比如

    { System.out.println(Integer.MIN_VALUE); // -2147483648 int a = Integer.MAX_VALUE; System.out.println(a); // 2147483647 a += 1; System.out.println(a); // -2147483648 a -= 1; System.out.println(a); //2147483647}

    这意味着赌钱赚钱官方登录,要是咱们在运算经由中要是只波及「纯加减运算」,而不波及「乘除」、「取最大值/最小值」和「数值大小判断」的话,Java 是不需要使用 Long 来确保正确性的,因为最终溢出会被转机记忆。