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

 更新时间:2022年03月18日 15:18:42   作者:明天一定.  
跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化

题目一

 解法

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

题目二

 解法

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

题目三

 解法

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

题目四

解法

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 数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC 单文件上传与多文件上传实例

    SpringMVC 单文件上传与多文件上传实例

    这篇文章主要介绍了SpringMVC 单文件上传与多文件上传实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • SpringBoot中的@Configuration注解详解

    SpringBoot中的@Configuration注解详解

    这篇文章主要介绍了SpringBoot中的@Configuration注解详解,Spring Boot推荐使用JAVA配置来完全代替XML 配置,JAVA配置就是通过 @Configuration和 @Bean两个注解实现的,需要的朋友可以参考下
    2023-08-08
  • java读取简单excel通用工具类

    java读取简单excel通用工具类

    这篇文章主要为大家详细介绍了java读取简单excel通用工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 详解Maven私服Nexus的安装与使用

    详解Maven私服Nexus的安装与使用

    这篇文章主要介绍了详解Maven私服Nexus的安装与使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Javaweb项目启动Tomcat常见的报错解决方案

    Javaweb项目启动Tomcat常见的报错解决方案

    Java Web项目启动Tomcat时可能会遇到各种错误,本文就来介绍一下Javaweb项目启动Tomcat常见的报错解决方案,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Java SpringMVC数据响应超详细讲解

    Java SpringMVC数据响应超详细讲解

    Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 Servlet,Spring MVC 角色划分清晰,分工明细,本章来讲解SpringMVC数据响应
    2022-04-04
  • Java中的三种代理模式详解

    Java中的三种代理模式详解

    这篇文章主要介绍了Java中的三种代理模式详解,代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象,文中提供了部分代码,需要的朋友可以参考下
    2023-08-08
  • Java中JSR303的基本使用详情

    Java中JSR303的基本使用详情

    这篇文章主要介绍了Java中JSR303的基本使用详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • jetbrain fleet对标vscode实际操作

    jetbrain fleet对标vscode实际操作

    Gradle是一个基于Apache Ant和Apache Maven概念项目自动化构建开源工具,jetbrain家的fleet(已获得预览权限)直接对标vscode , fleet有望超过vscode吗?今天我们实际操作下
    2021-12-12
  • Spring中@PropertySource注解使用场景解析

    Spring中@PropertySource注解使用场景解析

    这篇文章主要介绍了Spring中@PropertySource注解使用场景解析,@PropertySource注解就是Spring中提供的一个可以加载配置文件的注解,并且可以将配置文件中的内容存放到Spring的环境变量中,需要的朋友可以参考下
    2023-11-11

最新评论