以后打算刷题按照同样的类型来。
941. 有效的山脉数组
我的解法:
class Solution { public boolean validMountainArray(int[] arr) { int max=0; int maxindex=0;
//判断是否小于三 if(arr.length < 3){ return false; }
//找到最大值以及它的坐标 for(int i=1; i< arr.length; i++){ if(arr[i-1] < arr[i]){ max= arr[i]; maxindex= i; } }
//判断左侧 for(int i=1; i <= maxindex; i++){ if(arr[i]<=arr[i-1]){ return false; } }
//考虑两种特殊情况 if(maxindex==arr.length-1 || maxindex==0){ return false; } //判断右侧 for(int i=maxindex+1; i < arr.length; i++){ if(arr[i]>=arr[i-1]){ return false; } } return true; } }
思路就是先到最大值然后左右两侧做判断。
1470. 重新排列数组
我的解法:
class Solution { public int[] shuffle(int[] nums, int n) { int[] xnums=new int[n]; int[] ynums=new int[n]; for(int i=0; i<2*n; i++){ if(i<n){ xnums[i]=nums[i]; }else{ ynums[i-n]=nums[i]; } } for(int i=0;i<2*n;i++){ if(i%2==0){ nums[i]=xnums[i/2]; }else{ nums[i]=ynums[(i-1)/2]; } } return nums; } }
思路:用两个数组存储x和y值,然后再合并。