当前位置:网站首页>2022/07/20---把字符串转换成整数; 滑动窗口的最大值
2022/07/20---把字符串转换成整数; 滑动窗口的最大值
2022-07-21 22:56:00 【城猪猪】
题目描述
解题思路
把字符串转换成整数
注意以下几个问题:逻辑问题,判断出最大最小,直接做返回;去空格后的字符串要覆盖之前的字符串;考虑符号。
滑动窗口的最大值
我个人的方法是:滑窗的时候判断去除的元素以及加入的元素与上一窗口最大值的大小比较。但是我的逻辑不够简练。看版本一,提交的时候超过时间限制。而后参考其他人的思路,将逻辑简单化了一下。看版本二。
看其他的解法有说到用单调队列,具体我还没去看。后续再做了解。
代码实现
把字符串转换成整数
package cz;
public class StrToInt_0720 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="9223372036854775808";
int res=strToInt(s);
System.out.print(res);
}
public static int strToInt(String str) {
//去掉空格
str=str.trim();
int res=0;
long temp=0;
int tag=1;
if (str.matches("^[\\+-]?\\d.*$"))//开头包含数字
{
int i=0;//计算字符串长度
//判断是否有前导符号
if(str.charAt(i)=='-'||str.charAt(i)=='+') {
if(str.charAt(i)=='-') {
tag=-1;
}
i++;
}
while(i<str.length()&&str.charAt(i)<='9'&&str.charAt(i)>='0') {
//未遍历结束且仍有数字存在
temp=temp*10+str.charAt(i)-'0';
if(temp*tag<(-Math.pow(2, 31))) return Integer.MIN_VALUE; if(temp*tag>(Math.pow(2, 31))-1) return Integer.MAX_VALUE;
i++;
}
}
res=(int)temp*tag;
return res;
}
}
滑动窗口的最大值(版本1)
package cz;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Queue;
public class MaxSlidingWindow_0720 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int []nums = {
1};
int k = 1;
int [] res=maxSlidingWindow(nums,k);
System.out.print(res[0]);
}
public static int[] maxSlidingWindow(int[] nums, int k) {
//新建数组来保存最大值
int [] res=new int [nums.length-k+1];
//构造list
List<Integer> list = new ArrayList<>();
//取第一个窗口k个数值放入list,
int i=0;
while(i<k)
{
list.add(nums[i]);
i++;
}
//并确定此时第一个窗口的最大值
int flag = Collections.max(list);
//将第一个最大值放入及结果数组中
int ri=0;
res[ri]=flag;
ri++;
//处理剩下的数值
for(int mi=i;mi<nums.length;mi++)
{
//如果列表移出的数值不等于上个窗口的最大值
if(!list.get(0).equals(res[ri-1])) {
//移除列表第一个数
list.remove(0);
//将当前数加入列表
list.add(nums[mi]);
//如果当前数大于上个窗口的最大值,那么当前窗口的最大值为新加入的数,否则最大值不变
if (nums[mi]>res[ri-1]) {
res[ri]=nums[mi];
}
else {
res[ri]=res[ri-1];
}
ri++;
}
//如果列表移出的数值等于上个窗口的最大值
else {
list.remove(0);
list.add(nums[mi]);
//如果移除值小于当前值,则当前值为当前窗口最大值
if (nums[mi]>res[ri-1]) {
res[ri]=nums[mi];
}
//否则做大小判断
//移除第一个值,加入当前值,做大小判断,赋给结果数组
else {
int tflag = Collections.max(list);
res[ri]=tflag;
}
ri++;
}
}
return res;
}
}
滑动窗口的最大值(版本2).。。。未写完,明日继续。
边栏推荐
- ACL-IJCAI-SIGIR顶级会议论文报告会(AIS 2022)笔记2:分析与可解释性
- Why is risc-v architecture gaining momentum
- [FAQ] common reasons and solutions for the failure of in app payment services to pull up the payment page
- leetcode 792. Number of matching subsequences
- js中splice方法的使用
- MySQL: character sets and comparison rules
- 【达梦数据库】监视器上查看集群机器状态
- B端产品经理学习:后台交互
- 每日一题-LeetCode814-二叉树剪枝-递归
- Ioinputstream type
猜你喜欢
ACL-IJCAI-SIGIR頂級會議論文報告會(AIS 2022)筆記1:推薦系統
The use of splice method in JS
Acl-ijcai-sigir top conference paper report meeting (AIS 2022) Note 1: recommendation system
「运维有小邓」通过审计用户活动和AD域内部变化来确保GDPR合规
ACL - ijcai - Sigir top Conference Paper presentation Conference (ais 2022) Note 2: Analysis and interpretability
js中splice方法的使用
:class在项目中的使用
【技术】uniapp 之引入 u-charts 部分demo
(ICLR-2021)一幅图像相当于16X16个words:大规模图像识别的Transformer
机器学习-集成学习
随机推荐
watch在项目中的使用
智能仪器仪表行业数字化供应链管理系统:加速企业智慧供应链平台转型
Qt程序打包发布方法(使用官方提供的windeployqt工具)
B端产品经理学习:后台交互
【技术】uniapp 之引入 u-charts 部分demo
ACL - ijcai - Sigir top Conference Paper Presentation (ais 2022) Note 1: Recommended System
Multiple backpack notes
B-end product manager learning: data analysis - Zhuge IO, Shence data
Several ways of employee motivation
为什么RISC-V架构前进势头铆足
B端产品经理学习:导入模板设计
mapState
Four redis cluster schemes and their advantages and disadvantages
Configure SSL certificate for Baidu cloud virtual machine BCH
SSM之简单的CRUD
Acl-ijcai-sigir top conference paper report meeting (AIS 2022) Note 2: analysis and interpretability
How to pre train multimodal models using multi type data?
3A what is the percentage of passing the PMP Exam?
Matlab digital image processing homework: facial expression recognition
:class在项目中的使用