http://www.lintcode.com/zh-cn/problem/recover-rotated-sorted-array/
错误点:注意花括号,别少些~~~
注意点:
找
[1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 中的分界点,不能用二分法。只能依次遍历。 (类似于黑箱,不打开的那个永远是最小的,所以只有全打开才能找到最小的)
时间复杂度主要在reverse里,O(n),所以用二分法也不会简化时间复杂度。
两种方式,start和end的数据用不用i,j存都可以;
1 private void reverse(ArrayList<Integer> nums, int start , int end) { 2 for(int i = start, j = end; i < j; i++,j--) { 3 int temp = nums.get(i); 4 nums.set(i,nums.get(j)); 5 nums.set(j,temp); 6 } 7 }*/ 8 9 private void reverse(ArrayList<Integer> nums, int start, int end) { 10 while(start<end) { 11 int temp = nums.get(start); 12 nums.set(start, nums.get(end)); 13 nums.set(end, temp); 14 start++; 15 end--; 16 } 17 return; 18 }