1011. 在 D 天内送达包裹的能力
左值为数组中最大的元素(最少要能把它装下);
右值为数组元素之和;
while(left < right) {
int mid = (right + left) / 2;
int need = 1, cur = 0;
for(int weight : weights) {
if(cur + weight > mid) {
need++;
cur = 0;
}
cur += weight;
}
if(need <= days) {当前装载量过大
right = mid ;
}else {
left = mid + 1;
}
}
return left;
1002. 查找共用字符
int[] ans = new int[26];
Arrays.fill(ans, Integer.MAX_VALUE);
for(String cur : words) {
int[] curl = new int[26];//每个字符串
for(int i = 0; i < cur.length(); i++) {
curl[cur.charAt(i) – ‘a’]++;
}
for(int i = 0; i < 26; i++) {
ans[i] = Math.min(ans[i], curl[i]);//每个字符串都来比较。得到的是共有元素的数量
}
}
int n = words.length;
List
res = new ArrayList<>();
for(int i = 0; i < 26; i++) {
26个字母
for(int j = 0; j < ans[i]; j++) {
出现几次
res.add(String.valueOf((char) (i + ‘a’)));
}
}
原文地址:http://www.cnblogs.com/xtag/p/16878819.html