Lettcode刷题笔记(四)--数组

以后打算刷题按照同样的类型来。

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值,然后再合并。

 

 
posted @ 2020-11-18 20:38  leon-tzc  阅读(94)  评论(0)    收藏  举报