巧解Lintcode 3646:计算环形街道上的房屋数量(无需houses数组)
巧解Lintcode 3646:计算环形街道上的房屋数量
本题要求在不知道houses数组的情况下,仅使用Street类提供的5个方法计算环形街道上的房屋总数。
解题思路:
- 利用
Street.getTotal()获取街道房屋总数total。 - 利用
Street.getLeft()获取街道左侧房屋数量left。 - 根据环形街道特性,右侧房屋数量
right = total - left。 - 返回
left + right即为总房屋数量。
Java代码实现:
import java.util.List;
public class Solution {
/**
* @param street: a list of Street
* @return: the sum of all houses
*/
public int getHouses(List<Street> street) {
int total = street.get(0).getTotal();
int left = street.get(0).getLeft();
int right = total - left;
return left + right;
}
}
时间复杂度分析:
由于只调用了常数次Street类的方法,所以时间复杂度为 O(1)。
原文地址: https://www.cveoy.top/t/topic/fSC7 著作权归作者所有。请勿转载和采集!