我正在进行代码挑战,给定两个整数l和r,我必须打印i和r之间的所有奇数(i和r包含).该函数必须返回一个整数数组,表示l和r之间的奇数.
这就是我到目前为止所拥有的
static int[] oddNumbers(int l, int r) {
int[] theArray = new int[r];
for (int i = l; i < theArray.length; i++) {
if (i % 2 != 0) {
for (int n = 0; n < theArray.length; n++) {
theArray[n] = i;
}
}
}
return theArray;
}
所以目前这个代码,如果你给它值2和5应该返回3,5.但是,这只返回33333.我做错了什么?我该如何改进这段代码?
解决方法:
我会通过将范围中的下限推进到下一个奇数,如果不是已经奇数,然后从那里继续进行.
static int[] oddNumbers(int l, int r) {
if (r <= l) return null;
l = (l % 2) == 0 ? l + 1 : l;
int size = ((r - l) / 2) + 1;
int[] theArray = new int[size];
for (int i=0; i < size; ++i) {
theArray[i] = l + (i*2);
}
return theArray;
}
这里真正的困难在于制定逻辑以将一系列奇数映射到平面阵列上.完成此操作后,我们可以看到填充数组只需要一个简单的for循环.
标签:java,algorithm,arrays
来源: https://codeday.me/bug/20190611/1215923.html