剑指Offer之Java算法习题精讲数组与字符串
作者:明天一定. 发布时间:2021-05-24 19:21:45
标签: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;
}
}
题目二
解法
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;
}
}
来源:https://blog.csdn.net/wai_58934/article/details/123282362


猜你喜欢
- 本文会先介绍通用 Mapper 的简单原理,然后使用最简单的代码来实现这个过程。基本原理通用 Mapper 提供了一些通用的方法,这些通用方
- 过滤器实现过滤器需要实现 javax.servlet.Filter 接口。重写三个方法。其中 init()&n
- 在搭建Spring Cloud Eureka环境前先要了解整个架构的组成,常用的基础模式如下图:服务提供者:将springboot服务编写好
- 在Android中,在非主线程中更新UI控件是不安全的,app在运行时会直接Crash,所以当我们需要在非主线程中更新UI控件,那么就需要用
- 目录前言错误实例演示实现ApplicationContextAware接口lookup methodlookup method签名总结前言看
- 序言:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvid
- 前言:项目中我们经常会遇到有时候需要等待其他线程完成任务后,主线程才能执行其他任务,那么我们将如何实现呢?Join 解决方案join 的工作
- 本文主要给大家介绍了关于RxJava的一些特殊用法,分享出来供大家参考学习,需要的朋友们下面来一起看看吧。一、按钮绑定通过 RxView 可
- SpringCloud简介Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的微
- 效果图片重写DataGridView的OnRowPostPaint方法或者直接在DataGridView的RowPostPaint事件里写,
- 首先说一下,教科书上的扫描线算法确实是用c++很好实现,而且网上有很多源码,而java实现的基本没有(可能是我没看到),所以肖先生还是打算自
- 目录前言I. 项目环境1. 项目依赖2. 配置II. 邮件发送1. 简单文本邮件发送2. html发送3. 添加附件4. Freemaker
- 本文实例讲述了Java实现的最大匹配分词算法。分享给大家供大家参考,具体如下:全文检索有两个重要的过程:1分词2倒排索引我们先看分词算法目前
- 本文实例为大家分享了C++实现扫雷游戏的具体代码,供大家参考,具体内容如下#include<stdio.h>#include&l
- 引言 基于生成图片实现了一个手机号转图片的需求。 内容也很简单,直接
- 本文实例讲述了Android AutoCompleteTextView连接数据库自动提示的方法。分享给大家供大家参考,具体如下:这个简单例子
- 在android平板上用webview打开一个网页,调用里面的javascript方法,同时相互传参。网上例子很少啊,基本都不能获取返回值,
- 在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 S
- 一、什么是过滤器过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制
- execution (常用,方法级别的匹配)语法:execution(modifiers-pattern? ret-type-pattern