求一个算法的思路

2017-08-12 14:59:50 +08:00
 sun1991

求一个算法的思路:

假设有一个 byte[500]数组, 被分割成了 5 个 byte[100]数组, 存于 ArrayList<byte[]> bytesList:

bytesList[0] = byte[100]
bytesList[1] = byte[100]
bytesList[2] = byte[100]
bytesList[3] = byte[100]
bytesList[4] = byte[100]

class BufLocation{
	public int BlockIndex;
	public int StartPos;
	public int EndPos;
}

要求这样一个方法:

ArrayList<BufLocation> getBufLocations(ArrayList<byte[]> bytesList, int startPos, int endPos){
	...
}

输入相对于 byte[500]的 startPos 和 endPos, 输出 ArrayList<buflocation>, 比如:

输入 0, 0, 则输出 BufLocation{0, 0, 0} // bytesList[0], startPos=0, endPos=0

输入 0, 199, 则输出 BufLocation{0, 0, 99}, BufLocation{1, 0, 99}

输入 1, 101, 则输出 BufLocation{0, 1, 99}, BufLocation{1, 0, 1}

目前我能想到的方法基本上就是暴利破解, 嵌套一堆的 if else 条件来判断各种情况, 不知道有没有更简洁一些的方案?

2686 次点击
所在节点    算法
2 条回复
blankme
2017-08-12 15:31:58 +08:00
总结下你的问题:

原数据( a_1, a_2 )在一个直线上,改变后的数据( a_1 -> (x_1, y_1),a_2->(x_2, y_2 )在一个矩形中。

要输出(x_1, y_1) 和 (x_2, y_2 )区域段。

---------------------------------------

不考虑输入数据正确性的校验,要用到 if else 的地方好像只有
```
if (y_1 == y_2) {
...
} else {
...
}
```
sun1991
2017-08-12 19:36:39 +08:00
@blankme 脑子抽住了... 多谢提醒

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

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

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

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

© 2021 V2EX