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

作者:明天一定. 时间:2021-05-24 19:21:45 

题目一

剑指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;
   }
}

来源:https://blog.csdn.net/wai_58934/article/details/123282362

标签:Java,数组,字符串
0
投稿

猜你喜欢

  • eclipse 中的javac命令与java命令

    2023-08-19 14:16:57
  • RocketMQ生产者调用start发送消息原理示例

    2022-07-05 20:13:04
  • Java Bean 作用域及它的几种类型介绍

    2022-12-02 20:39:42
  • MyBatis全局配置文件详解

    2021-09-19 10:13:32
  • C# 添加、修改和删除PDF书签的实例代码

    2022-09-24 06:45:55
  • springcloud eureka切换nacos的配置方法

    2022-05-19 01:58:47
  • 详解SpringBoot的事务管理

    2022-01-15 13:39:26
  • Java 中如何使用 stream 流

    2021-10-09 01:13:37
  • spring springMVC中常用注解解析

    2023-09-14 20:45:46
  • Java 常量池的实例详解

    2023-12-04 00:51:28
  • IDEA新建springboot项目时未生成pom.xml文件的解决操作

    2022-08-22 03:16:31
  • 浅谈Java如何实现一个基于LRU时间复杂度为O(1)的缓存

    2022-02-02 08:35:36
  • Java8 用Lambda表达式给List集合排序的实现

    2023-02-05 17:27:09
  • Java与Kotlin互调原理讲解

    2023-08-19 00:07:41
  • SpringBoot集成vue的开发解决方案

    2023-11-24 20:58:10
  • 详解Java并发包中线程池ThreadPoolExecutor

    2022-03-23 19:57:20
  • 教你用JAVA写文本编辑器(四)

    2023-10-18 18:30:16
  • Android异常 java.lang.IllegalStateException解决方法

    2023-07-28 10:26:36
  • Spring钩子接口汇总分析使用示例

    2022-09-24 23:29:56
  • JAVA通过Filter实现允许服务跨域请求的方法

    2022-08-02 02:17:46
  • asp之家 软件编程 m.aspxhome.com