public static boolean isSkipGameRound( int firstChairIds, int lastChairIds, int currChairIds, List< Integer > chairIds ) {
// 环形循环
//最大循环2n次,先找中a,然后再找c,如果没找到c却先找到b,就是c不在ab之间。
boolean isFindBegin = false;
final int searchCount = chairIds.size( );
for ( int i = 0, n = searchCount * 2; i < n; i++ ) {
int index = i;
//index>n时,要把inde=index-n。避免越界,实现了环形查找。
if ( index >= searchCount ) {
index = index - searchCount;
}
// 查找开始结点
if ( !isFindBegin ) {
if ( chairIds.get( index ) == firstChairIds ) {
isFindBegin = true;
}
continue;
}
// 已找到开始结点,再循环n次
if ( chairIds.get( index ) == lastChairIds ) {
break;
}
// 已找到
if ( chairIds.get( index ) == currChairIds ) {
return true;
}
}
return false;
}