public static void findTwoSwapped(List<Integer> nums) {
int n = nums.size();
for(int i = 0; i < n - 1; i++) {
if (nums.get(i + 1) < nums.get(i)) {
//判断巧妙
y = nums.get(i + 1);
if (x == -1) x = nums.get(i);
// second swap occurence
else break;
}
}
}
判断的巧妙之处
1.既可以保证交换数位于相邻位置时,for循环会进行完
2.两个数不相邻用x==-1来保证记录第一个数,在下一次找到找到这个数时不会再次改变
3.如果最后一个数位于最后用判断也可以找到
4.第一次找到的肯定是较大的数,第二次找到的是较小的数