一个算法问题,求高手来答

2015-03-05 15:48:17 +08:00
 leassy

一个数组,如 数组1:{1,2,3,4,5,6,7,8,9,10.....}
有很多,或者只有很少几个 如数组2:{1,2,3,4}
元素数量不定
给出一个元数的位置,在数组中这个位置前后平均取出元素,数量不超过指定的X个

如,给出位置是4,在数组中共取出最多5个,要求前后数量平均

结果为:
第一个数组: 2,3,4,5,6
第二个数组是1,2,3,4

给出位置是2,在数组中共取出最多5个,要求前后数量平均
第一个数组: 1,2,3,4,5
第二个数组是1,2,3,4

意思就是说前面的元素数量不足,就在后面补足,后面的元素数量不足就在前面补足

不管什么语言都可以,谢谢

3876 次点击
所在节点    程序员
22 条回复
Arrowing
2015-03-06 11:39:41 +08:00
恢复可以用markdown么?

```javascript
/* 生成一个分页数组,以from开始,num个元素 */
function getArrOfNum(num, from) {
from = from || 1;

var arr = new Array(num),
i = from,
len = arr.length + from;

for (; i < len; i++) {
arr[i - from] = i;
};

return arr;
}

/* 当页数改变时,适用于ajax分页 */
function toPage(count/* 总页数 */, current/* 当前页*/, max/* 显示的最多页数 */) {
var pages,//最后得到的分页元素
from = current - Math.floor(max/2),//当前页的前面页数
to = current + Math.floor(max/2) - 1;//当前页的后面页数

if (count > max && from >= 1) {

if (to <= count) {
pages = getArrOfNum(max, from);
} else {
pages = getArrOfNum(max, from - (to - count));
};

} else { // 少于等于max页,直接返回
pages = getArrOfNum(count > max ? max : count);
};
return pages;
}
toPage(15, 7, 5);
```
sefemp
2015-03-06 15:22:04 +08:00
不明觉厉啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/174692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX