Airbnb Code Challenge 12

我把代码贴下面

    static class DataEntry{
        int index;
        int floorVal;
        double diff;
        public DataEntry(int index, int floorVal, double differenceFromFloor){
            this.index = index;
            this.floorVal = floorVal;
            this.diff = differenceFromFloor;
        }
    }

    public static List<Integer> Solution5(List<Double> prices, int target){
        DataEntry[] entries = new DataEntry[prices.size()];
        int floorSum = 0, xFloor;
        double x;
        for(int i=0; i<prices.size(); i++){
            x = prices.get(i);
            xFloor = (int)x;
            floorSum += xFloor;
            DataEntry newDataEntry = new DataEntry(i, xFloor, x - xFloor);
            entries[i] = newDataEntry;
        }

        int totalDiff = target - floorSum;
        Arrays.sort(entries, (a, b) -> a.diff >= b.diff ? -1 : 1); // sort entries according to difference

        int idx = 0;
        while(idx < totalDiff){
            entries[idx] = new DataEntry(entries[idx].index, entries[idx].floorVal+1, entries[idx].diff); // add 1 to the first diff entries
            idx++;
        }

        Arrays.sort(entries, (a, b) -> a.index < b.index ? -1 : 1); // sort entries according to original idx

        List<Integer> result = new ArrayList();
        for(int i=0; i<prices.size(); i++){
            result.add(entries[i].floorVal);
        }
        return result;
    }

选择语言是Java 8

楼主收到回复了吗~

收到啦 准备两轮电面

应该是吧,但是我看之前的几个帖子有一些区别:比如输入和输出的要求,有的写的是array有的写的是list. 还有一些对输出顺序没有要求。但是总体题目是一个意思。