Как проверить ввод декартовых координат (int [] []) в класс Java в Sublime Text 3? - PullRequest
0 голосов
/ 01 марта 2020

Я использую правильный алгоритм для Макс. Точек на линии на Java, используя Sublime Text 3 "Command + B".

Попытка

import java.util.HashMap;

class Solution{
    int[][] points;
    int n;
    HashMap<Double, Integer> lines = new HashMap<Double, Integer>();
    int horizontalLines;

    public Pair<Integer, Integer> addLine(int i, int j, int count, int duplicates) {
        int x1 = points[i][0];
        int y1 = points[i][1];
        int x2 = points[j][0];
        int y2 = points[j][1];

        if ((x1 == x2) && y1 == y2) 
            duplicates++;
        else if (y1 == y2) {
            horizontalLines += 1;
            count = Math.max(horizontalLines, count);
        } else {
            double slope = 1.0 * (x1 - x2) / (y1 - y2) + 0.0;
            lines.put(slope, lines.getOrDefault(slope, 1) + 1);
            count = Math.max(lines.get(slope), count);
        }
        return new Pair(count, duplicates);
    }

    public int maxPointsWithPointI(int i) {
        lines.clear();
        horizontalLines = 1;
        int count = 1;
        int duplicates = 0;

        for (int j = i + 1; j < n; j++) {
            Pair<Integer, Integer> p = addLine(i, j, count, duplicates);
            count = p.getKey();
            duplicates = p.getValue();
        }
        return count + duplicates;
    }

    public int maxPoints(int[][] points) {
        this.points = points;
        n = points.length;
        if (n < 3) return n;

        int maxCount = 1;
        for (int i = 0; i < n - 1; i++)
            maxCount = Math.max(maxPointsWithPointI(i), maxCount); 
        return maxCount;
    }
}

Ошибки

b.java:9: error: cannot find symbol
    public Pair<Integer, Integer> addLine(int i, int j, int count, int duplicates) {
           ^
  symbol:   class Pair
  location: class Solution
b.java:25: error: cannot find symbol
        return new Pair(count, duplicates);
                   ^
  symbol:   class Pair
  location: class Solution
b.java:35: error: cannot find symbol
            Pair<Integer, Integer> p = addLine(i, j, count, duplicates);
            ^
  symbol:   class Pair
  location: class Solution
3 errors

Я думаю, может быть, мне следует импортировать некоторые пакеты вверху файла? Что мне делать?

Кроме того, я бы хотел проверить алгоритм, используя class b:

class b{
    public static void main(String[] args){
        Solution myTest = new Solution();
        System.out.println(myTest.maxPoints()); 
    }
}

Как передать переменные в maxPoints()?

Входы и выходы:

Input: [[1,1],[2,2],[3,3]]
Output: 3

Input: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
Output: 4

$, которые java:

/usr/bin/java

$ java -версия

java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

Sublime JavaC Сборка системы

{
  "cmd": ["javac \"$file_name\" && java \"$file_base_name\""],
  "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
  "selector": "source.java",
  "shell": true,
  "quiet":true
}

Спасибо! Я новичок в Java.

...