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

相关文章

  • springboot读取application.yml报错问题及解决

    springboot读取application.yml报错问题及解决

    这篇文章主要介绍了springboot读取application.yml报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • easyExcel分批导入文件方式

    easyExcel分批导入文件方式

    这篇文章主要介绍了easyExcel分批导入文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Springboot application.yml配置文件拆分方式

    Springboot application.yml配置文件拆分方式

    这篇文章主要介绍了Springboot application.yml配置文件拆分方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • 详解JavaFX桌面应用开发-Group(容器组)

    详解JavaFX桌面应用开发-Group(容器组)

    这篇文章主要介绍了JavaFX桌面应用开发-Group(容器组),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 浅析SpringBoot统一返回结果的实现

    浅析SpringBoot统一返回结果的实现

    前后端开发过程中数据交互规范化是一件非常重要的事情,不仅可以减少前后端交互过程中出现的问题,也让代码逻辑更加具有条理,下面小编就和大家讲讲SpringBoot如何统一返回结果的吧
    2023-07-07
  • 关于@JSONField和@JsonFormat的使用区别说明

    关于@JSONField和@JsonFormat的使用区别说明

    这篇文章主要介绍了关于@JSONField 和 @JsonFormat的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring boot实现数据库读写分离的方法

    Spring boot实现数据库读写分离的方法

    本篇文章主要介绍了Spring boot实现数据库读写分离的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Java动态循环队列是如何实现的

    Java动态循环队列是如何实现的

    今天带大家学习java队列的相关知识,文章围绕着如何实现Java动态循环队列展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringBoot快速构建应用程序方法介绍

    SpringBoot快速构建应用程序方法介绍

    这篇文章主要介绍了SpringBoot快速构建应用程序方法介绍,涉及SpringBoot默认的错误页面,嵌入式Web容器层面的约定和定制等相关内容,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11
  • Java代码审计之URL重定向的问题解决

    Java代码审计之URL重定向的问题解决

    URLRedirect url重定向漏洞也称url任意跳转漏洞,网站信任了用户的输入导致恶意攻击,本文主要介绍了Java代码审计之URL重定向的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06

最新评论