C/C++教程

LeetCode(二)

本文主要是介绍LeetCode(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
    1. package com.model.number;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/28 20:04
       * 跳跃问题
       */
      public class NumberDemo03 {
          public static int res=Integer.MAX_VALUE;
          public static void main(String[] args) {
      
              int[] arr={4,1,5,1,1,1,7,1,1,1};
              System.out.println(jump2(arr));
      
          }
          
      
          public static int jump2(int[] arr){
      //        无法跳跃的情况
              if (arr.length<1||arr[0] == 0){
                  return -1;
              }
      //
              int jump=0;
              int next=0;
              int cur=0;
              for (int i = 0; i < arr.length; i++) {
                  if (i>cur){
                      jump++;
                      cur=next;
                  }
                  next=Math.max(next, i+arr[i]);
              }
      
              return jump;
          }
      }
  1.  

    1. package com.model.number;
      
      import java.util.Arrays;
      import java.util.HashMap;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/28 23:16
       * 找出一个区间内最大的连续空间的长度
       */
      public class NumberDemo04 {
          public static void main(String[] args) {
              int[] arr={1,3,5,4,9,81,132,5456,65,2123,2};
              System.out.println(len(arr));
              System.out.println(arrLen(arr));
      
          }
          public static int len(int[] arr){
              for (int i = 0; i < arr.length-1; i++) {
                  for (int j = 0; j < arr.length-1-i; j++) {
                      if (arr[j]>arr[j+1]){
                          arr[j]=arr[j]^arr[j+1];
                          arr[j+1]=arr[j]^arr[j+1];
                          arr[j]=arr[j]^arr[j+1];
                      }
                  }
              }
              System.out.println(Arrays.toString(arr));
              int max=0;
              for (int i = 0; i < arr.length; i++) {
                  int temp=1;
                  for (int j = i+1; j < arr.length; j++) {
                      if (j-i==arr[j]-arr[i]){
                          temp++;
                      }else {
                          i=j;
      
                          break;
                      }
                  }
                  max=Math.max(max    , temp);
              }
              return max;
          }
      
          public static int arrLen(int[] arr){
      
              HashMap<Integer, Integer> map = new HashMap<>();
      //        map 中存放以某个数据为开头或者结尾的数据,key代表某个数,value代表的一共有几个连续的数
      //        首先将某个数据放进map中,查看是否存在以 num-1和num+1 为开头或结尾的数据存在
      //        如果存在就是将他们进行合并
              int res=0;
              for (int num:arr){
                  if (!map.containsKey(num)){
                      map.put(num, 1);
                      Integer leftLen = map.getOrDefault(num - 1, 0);
                      Integer rightLen =  map.getOrDefault(num + 1, 0);
                      int all=leftLen+1+rightLen;
                     map.put(num-leftLen, all);
                     map.put(num+ rightLen, all);
                     res=Math.max(all, res);
                  }
      
      
              }
              return res;
      
      
      
          }
      }
  2.  

    1. package com.model.array;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/28 23:58
       * 在二维数组中找出某个数target是否存在
       * 二维数组每一行都是有序的
       */
      public class ArrayDemo02 {
          public static void main(String[] args) {
      
              int[][] matrix={{1,2,3,4},{10,20,30,40},{11,12,13,45}};
              System.out.println(find(matrix, 13));
          }
          public static boolean find(int[][] matrix,int target){
      
              int row=0;
              int col=matrix[0].length-1;
              while (row<matrix.length&&col>=0){
                  if (matrix[row][col]<target){
                      row++;
                      col=matrix[0].length-1;
                  }else {
                      if (target==matrix[row][col]){
                          return true;
                      }
                      col--;
                  }
              }
              return false;
      
          }
      }
  3.  

     

     

    1.  

      package com.model.array;
      
      import java.util.ArrayList;
      import java.util.Arrays;
      
      /**
       * @Description:测试类
       * @Author: 张紫韩
       * @Crete 2021/8/29 0:14
       * 找到一个有0和1组成的二位数组
       * 找出那个行有最多1,返回那个行号
       * */
      public class ArrayDemo03 {
          public static void main(String[] args) {
      
              int[][] matrix={{1,1,1,1,1,1,1,1},{0,0,1,1,1,1,1,1},{0,0,0,0,1,1,1,1},{0,0,1,1,1,1,1,1}};
              ArrayList<Integer> list = matrix(matrix);
              for(Integer num:list){
                  System.out.println(num);
              }
          }
          public static ArrayList<Integer> matrix(int[][] matrix){
              ArrayList<Integer> resList = new ArrayList<>();
      
              int row=0;
              int col=matrix[0].length-1;
              int max=0;
              int temp=0;
              while (row< matrix.length&&col>=0){
                  if (matrix[row][col]==1){
                      col--;
                      temp++;
                      if (col==0) break;
                  }else{
                      if (matrix[row][col+1]==1){
                          if (max < temp) {
                              resList.clear();
                              max = temp;
                          }
                          resList.add(row);
                      }
                      row++;
                  }
      
              }
              
              if (col==0){
                  for (int i = 0; i <matrix.length ; i++) {
                      if (matrix[i][0]==1){
                          resList.add(i);
                      }
                  }
      
              }
              return resList;
          }
      }

       

       

        
这篇关于LeetCode(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!