求一个算法的思路:
假设有一个 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 条件来判断各种情况, 不知道有没有更简洁一些的方案?