Добавление значений объекта класса Cell - PullRequest
0 голосов
/ 23 апреля 2019

Мне дан класс и интерфейс, и меня просят реализовать интерфейс:

    public class Cell {
        private int column;
        private int row;
        public int getColumn(){ return column;}
        public void setColumn(int column){this.column = column;}
        public int getRow(){return row;}
        public void setRow(int row){this.row = row;}
    }
    public interface ITable {
        void set(Cell cell, long value); //sets the value of the cell
        long get(Cell cell); //gets the value of the cell
        long sum(Cell fromCell, Cell toCell); //adds all the cell values between fromCell to toCell
        long avg(Cell fromCell, Cell toCell); //computes average between the values of fromCell to toCell
    }

Примечание: Диапазон [fromCell:toCell] означает прямоугольник с верхним левым углом в fromCell и правым нижним углом в toCell.

Пределы:
Максимальный номер столбца 1000
Максимальный номер строки 1000
Максимальное количество непустых ячеек составляет 1000

Это один из вопросов интервью, я не мог решить его во время интервью или после него. Я даже попросил интервьюера для решения, но он не мог предоставить. Мне очень любопытно увидеть решение этого вопроса.

Если A1 равно 1, A2 равно 2 и A3 равно 3, то сумма (A1, A3) = 6

1 Ответ

0 голосов
/ 23 апреля 2019

Вопрос не в том, чтобы добавить объект в ячейку.Клеточные объекты - это просто способ хранения данных строк и столбцов.Любые длинные значения, которые вы хотите получить, будут сохранены в новом создаваемом вами классе.

Например:

public class MyTable implements ITable {
   long[][] table;
   public MyTable(int r, int c) {
      table = new long[r][c];
   }
   void set(Cell cell, long value) {
        table[cell.getRow()][cell.getColumn()] = value;
   }
   long get(Cell cell) {
        return table[cell.getRow()][cell.getColumn()];
   }       
   long sum(Cell fromCell, Cell toCell) {
        long sum = 0;
        for(int r = fromCell.getRow(); r <= toCell.getRow(); r++) {
            for(int c = fromCell.getColumn(); c <= toCell.getColumn(); c++) {
                sum += table[r][c];
            } 
        }
        return sum;
   }
   long avg(Cell fromCell, Cell toCell) {
        long num = 0;
        long sum = 0;
        for(int r = fromCell.getRow(); r <= toCell.getRow(); r++) {
            for(int c = fromCell.getColumn(); c <= toCell.getColumn(); c++) {
                sum += table[r][c];
                num++;
            } 
        }
        return sum/num;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...