Java日记2018-05-28
2018-05-28 本文已影响0人
hayes0420
- 旋转数组的最小数字
卡壳的地方在于移动边界的时候要考虑mid自己是否可以过滤掉,即向左或右移动1位
public class Solution0528 {
public static int minNumberInRotateArray(int[] arr) {
if(arr==null) return -1;
int left = 0;
int right = arr.length-1;
int mid = 0;
while(left<right) {
mid = (left+right)/2;
if(arr[left] < arr[mid]) {
left = mid+1;
} else {
right = mid;
}
}
System.out.println(arr[left]);
return arr[left];
}
public static void main(String[] args) {
int[] arr = {3, 4, 5, 1, 2};
minNumberInRotateArray(arr);
}
}
- 矩阵中的路径
思路
hasPath从坐标0,0开始遍历,通过hasPathCore递归的方法查找。hasPathCore是具体递归查找的实现。visited代表该字符是否访问过。下标的计算方式通过index = i*cols+j获取。如果matrix[index]!=str[k],那么显然不是一个合法的路径,visited[index]==0代表访问过,也不是一个合法的路径。j>=cols i>=rows当然也不行,rows col是固定最大的行 列。
晚上补充吧,还是很绕的