我正在解决《Go 编程语言》一书的问题,在练习 7.13 中需要String向接口添加一个方法。
是否可以String()向接口添加方法?因为直到运行时才知道数据类型。
我正在解决这个问题:
整数的二进制表示中的1的计数称为该数字的权重.以下算法查找具有相同权重的最接近的整数.例如,对于123(0111 1011)2,最接近的整数是125(0111 1101)2.
O(n)的解决方案,其中n是输入数字的宽度,是通过交换不同的第一对连续位的位置.
有人可以在O(1)运行时和空间中给我一些解决方法吗?
谢谢
我正在尝试优化以下代码:
private final static class SubarrayProcessorNegativeSumStrategy
implements SubarrayProcessorStrategy {
@Override public Integer apply(Integer[] array) {
final List<Integer> numbers = Arrays.asList(array);
return (int) IntStream.range(0, numbers.size())
.map(index -> findNegativeSums(numbers, index)).sum();
}
private Integer findNegativeSums(final List<Integer> numbers,
final Integer startIndex) {
final Integer numbersSize = numbers.size();
if (startIndex < numbersSize) {
return (int) IntStream.range(startIndex, numbers.size())
.map(newIndex -> numbers.subList(startIndex, newIndex + 1)
.stream().mapToInt(x -> x).sum())
.filter(sum -> sum < 0).count();
} else {
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
我想避免迭代startIndex到newIndex + 1原始List的每个元素 …
为什么我a使用此代码在变量中获取空值?另外,没有{:?}格式化这不编译?
fn main() {
let mut a = 5;
let mut b = 6;
let n = 7;
let a = b = n;
println!("{:?}", a);
}
Run Code Online (Sandbox Code Playgroud)