服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 剑指Offer之Java算法习题精讲数组与字符串

剑指Offer之Java算法习题精讲数组与字符串

2022-10-10 14:38明天一定. Java教程

跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化

题目一

剑指Offer之Java算法习题精讲数组与字符串

 解法

class Solution {
  public int findLengthOfLCIS(int[] nums) {
      if(nums.length==1) return 1;
      int fast = 1;
      int tmp = 1;
      int max = Integer.MIN_VALUE;
      while(fast<nums.length){
          if(nums[fast]>nums[fast-1]){
              tmp++;
              max = Math.max(max,tmp);
          }else{
              max = Math.max(max,tmp);
              tmp = 1;
          }
          fast++;
      }
      return max;
  }
}

 

题目二

剑指Offer之Java算法习题精讲数组与字符串

 解法

class Solution {
  public boolean validPalindrome(String s) {
      int left = 0;
      int right = s.length()-1;
      while(left<right){
          if(s.charAt(left)==s.charAt(right)){
              left++;
              right--;
          }else{
              String tmp = s.substring(left, right + 1);
              return validPalindrome(tmp,1,tmp.length()-1)||validPalindrome(tmp,0,tmp.length()-2);
          }
      }
      return true;
  }
  public boolean validPalindrome(String s, int low, int high) {
      for (int i = low, j = high; i < j; ++i, --j) {
          char c1 = s.charAt(i), c2 = s.charAt(j);
          if (c1 != c2) {
              return false;
          }
      }
      return true;
  }
}

 

题目三

剑指Offer之Java算法习题精讲数组与字符串

 解法

class Solution {
  public double findMaxAverage(int[] nums, int k) {
      int w = nums.length-k;
      int max = Integer.MIN_VALUE;
      for(int i = 0;i<=w;i++){
          int res = 0;
          for(int j = 0;j<k;j++){
              res = nums[i+j]+res;
          }
          max = Math.max(max,res);
      }
      double ans = (double)max/k;
      return ans;
  }
}

 

题目四

剑指Offer之Java算法习题精讲数组与字符串

解法

class Solution {
  public int findShortestSubArray(int[] nums) {
      int[] n = new int[50001];
      for(int i = 0;i<nums.length;i++){
          n[nums[i]]+=1;
      }
      int max = Integer.MIN_VALUE;
      ArrayList<Integer> list = new ArrayList<Integer>();
      for(int i = 0;i<n.length;i++){
          max = Math.max(n[i],max);
      }
      for(int i = 0;i<n.length;i++){
          if(n[i]==max){
              list.add(i);
          }
      }
      int min = Integer.MAX_VALUE;
      for(int i = 0;i<list.size();i++){
          int res = list.get(i);
          int left = 0;
          int right = nums.length-1;
          while(nums[left]!=res){
              left++;
          }
          while(nums[right]!=res){
              right--;
          }
          min = Math.min(min,right-left+1);            
      }
      return min;
  }
}

到此这篇关于剑指Offer之Java算法习题精讲数组与字符串的文章就介绍到这了,更多相关Java 数组内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/wai_58934/article/details/123282362

延伸 · 阅读

精彩推荐
  • Java教程springboot+mybatis-plus+oracle实现逻辑删除

    springboot+mybatis-plus+oracle实现逻辑删除

    最近在做一个前后端分离的小项目,需要删除用户表的用户,本文主要实现了springboot+mybatis-plus+oracle逻辑删除,具有一定的参考价值,感兴趣的可以了解一...

    热爱生活的小码农10962021-11-05
  • Java教程举例讲解Java中Piped管道输入输出流的线程通信控制

    举例讲解Java中Piped管道输入输出流的线程通信控制

    Java中的PipedWriter、PipedReader类管道的读写依赖于PipedOutputStream、PipedInputStream两个管道输入输出类,这里我们将来举例讲解Java中Piped管道输入输出流的线程通信...

    skywangkw5152020-05-22
  • Java教程浅谈Maven 项目中依赖的搜索顺序

    浅谈Maven 项目中依赖的搜索顺序

    这篇文章主要介绍了浅谈Maven 项目中依赖的搜索顺序,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    polly6802021-06-02
  • Java教程java异步编程详解

    java异步编程详解

    这篇文章主要介绍了java异步编程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起...

    Nostalgia_forever11372021-07-27
  • Java教程java实现水果超市管理系统

    java实现水果超市管理系统

    这篇文章主要为大家详细介绍了java实现水果超市管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    scropio0zry4362021-03-22
  • Java教程新手了解java基础知识(二)

    新手了解java基础知识(二)

    这篇文章主要介绍了Java基础知识,本文介绍了Java语言相关的基础知识、历史介绍、主要应用方向等内容,需要的朋友可以参考下,希望对你有所帮助...

    保护眼睛9862021-09-27
  • Java教程Mybatis拦截器的实现介绍

    Mybatis拦截器的实现介绍

    MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能。MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。下面通过本文...

    CZengze4062020-06-29
  • Java教程Java控制台版五子棋的简单实现方法

    Java控制台版五子棋的简单实现方法

    这篇文章主要给大家介绍了关于Java控制台版五子棋的简单实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    钱多多不多余3762021-08-02