假设有一个 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 条件来判断各种情况, 不知道有没有更简洁一些的方案?
1
blankme 2017-08-12 15:31:58 +08:00 1
总结下你的问题:
原数据( 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 { ... } ``` |