1. ホーム
  2. java

[解決済み] Leetcode220 エラー: 互換性のない型: int と <null> です。

2022-02-28 02:06:54

質問

以下のコードをコンパイルすると、10行目で"incompparable types: int and "というエラーが表示されました。

public class Solution {
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
    if (nums == null || k <= 0 || t < 0 || nums.length < 2) return false;

    TreeSet<Integer> set = new TreeSet<>();
    for (int i = 0; i < nums.length; i++) {
        int floor = set.floor(nums[i] + t);//return largest number smaller than nums[i] + t or null
        int ceil = set.ceiling(nums[i] - t);//return least number larger than num[i] - t or null

        if ((floor != null && floor >= nums[i]) || (ceil != null && ceil <= nums[i])) {
            return true;
        }

        set.add(nums[i]);

        if (set.size() > k) {
            set.remove(nums[i - k]);
        }
    }

    return false;
}}

が、treeset, floor, ceilの前にfinalキーワードを入れると、正常にコンパイルされます。どなたか、何が起こっているのか説明していただけませんか?ありがとうございます。

...
final TreeSet<Integer> set = new TreeSet<>();
for (int i = 0; i < nums.length; i++) {
    final Integer floor = set.floor(nums[i] + t);//return largest number smaller than nums[i] + t or null
    final Integer ceil = set.ceiling(nums[i] - t);//return least number larger than num[i] - t or null
...

解決方法は?

int floor を定義します。 floor を基本的な int 型を使用します。 Integer floor を定義します。 floor をノントリビアルとする。 class 型を使用します。 null はトリビアルでない型でのみ使用されます