god_1021 2024-01-08 19:54 采纳率: 0%
浏览 5

LeetCode(力扣) 10033 哈希图的问题

LeetCode 第10033题
静态哈希图和非静态哈希图的结果不一样是为什么?

class Solution {
    //非静态哈希图
    HashMap<Integer,Integer> map = new HashMap<>();

    public int minimumOperationsToMakeEqual(int x, int y) {
        if (x <= y) return y - x;
        if (map.containsKey(x)) return map.get(x);
        int ans = x - y;
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 11, y) + x % 11 + 1);
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 11 + 1, y) + 11 - x % 11 + 1);
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 5, y) + x % 5 + 1);
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 5 + 1, y) + 5 - x % 5 + 1);
        map.put(x, ans);
        return ans;
    }
}

结果图(正确)

img

但是当我换成了时
static HashMap<Integer,Integer> map = new HashMap<>();

class Solution {
    //静态哈希图
    static HashMap<Integer,Integer> map = new HashMap<>();

    public int minimumOperationsToMakeEqual(int x, int y) {
        if (x <= y) return y - x;
        if (map.containsKey(x)) return map.get(x);
        int ans = x - y;
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 11, y) + x % 11 + 1);
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 11 + 1, y) + 11 - x % 11 + 1);
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 5, y) + x % 5 + 1);
        ans = Math.min(ans, minimumOperationsToMakeEqual(x / 5 + 1, y) + 5 - x % 5 + 1);
        map.put(x, ans);
        return ans;
    }
}

结果图(错误)

img

于是我单独测试这个样例,但结果却是对的
单个测试结果图(正确)

img

这是为什么?求解。

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 1月8日