请检查是否存在数组越界非法访问等情况

Lizhifun 2016-08-14 05:59:51
请问各位大神,牛客网线性插值题目提示错误,请问怎么解决啊:

您的代码已保存
请检查是否存在数组越界非法访问等情况


题目描述

信号测量的结果包括测量编号和测量值。存在信号测量结果丢弃及测量结果重复的情况。

1.测量编号不连续的情况,认为是测量结果丢弃。对应测量结果丢弃的情况,需要进行插值操作以更准确的评估信号。
采用简化的一阶插值方法,由丢失的测量结果两头的测量值算出两者中间的丢失值。
假设第M个测量结果的测量值为A,第N个测量结果的测量值为B。则需要进行(N-M-1)个测量结果的插值处理。进行一阶线性插值估计的第N+i个测量结果的测量值为A+( (B-A)/(N-M) )*i (注:N的编号比M大。)
例如:只有测量编号为4的测量结果和测量编号为7的测量结果,测量值分别为4和10
则需要补充测量编号为5和6的测量结果。
其中测量编号为5的测量值=4 + ((10-4)/(7-4))*1 = 6
其中测量编号为6的测量值=4 + ((10-4)/(7-4))*2 = 8

2.测量编号相同,则认为测量结果重复,需要对丢弃后来出现的测量结果。

请根据以上规则进行测量结果的整理。
详细描述:
接口说明
原型:
intCleanUpMeasureInfo(MEASURE_INFO_STRUCT* pOriMeasureInfo,intnOriMINum,intnMaxMIRst, MEASURE_INFO_STRUCT* pMeasureInfoRst);
输入参数:
MEASURE_INFO_STRUCT* pOriMeasureInfo: 原始测量结果内容,以结构数组方式存放。测量编号已经按升序排列。MEASURE_INFO_STRUCT定义包含编号和测量值,见OJ.h
int nOriMINum: 原始测量结果个数。
int nMaxMIRst: 整理的测量结果最大个数。
输入参数:
MEASURE_INFO_STRUCT* pMeasureInfoRst: 整理的测量结果
返回值:
Int
整理的测量结果个数


输入描述:
输入说明
1 输入两个整数m, n
2 输入m个数据组


输出描述:
输出整理后的结果

输入例子:
2 3
4 5
5 7

输出例子:
4 5
5 7

我的代码:

import java.util.*;
public class Main {

public static void main(String[] args) {

Scanner scan=new Scanner(System.in);
TreeMap hm=new TreeMap();
String[] nums=new String[3];
int count=scan.nextInt();
for(int i=0;i<count;i++){
Scanner scan1=new Scanner(System.in);
nums=scan1.next().split(" ");
if(!hm.containsKey(Integer.parseInt(nums[0])))
hm.put(Integer.parseInt(nums[0]), Integer.parseInt(nums[1]));
}
Collection coll=hm.keySet();
List list=new ArrayList(coll);
for(int i=0;i<list.size()-1;i++){
int m=Integer.parseInt(list.get(i).toString());
int n=Integer.parseInt(list.get(i+1).toString());
if(n-m!=1){
int cha=n-m-1;
int A=Integer.parseInt(hm.get(m).toString());
int B=Integer.parseInt(hm.get(n).toString());
for(int j=1;j<n-m;j++)
{
int value=(A+(B-A)/(n-m)*i);
hm.put(m+j, value);
}
}
}
Iterator it=hm.keySet().iterator();
while(it.hasNext())
{
Object key=it.next();
System.out.println(key+" "+hm.get(key));
}
}
}
...全文
2227 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
未止前行 2019-06-19
  • 打赏
  • 举报
回复
如果递归爆栈,也会报这个错误。内存过大。本地不报错,因为我们本地内存很大,牛客上每个题都会有内存限制

我是这个原因,改善优化代码就行

参考自https://blog.csdn.net/ustbbsy/article/details/80274382
Lizhifun 2016-08-16
  • 打赏
  • 举报
回复
引用 1 楼 呱呱_的回复:
18到20行,list.get(i+1).toString()
谢谢大神,什么情况下会出现溢出呢?我感觉不会出现啊
c173甘甘 2016-08-14
  • 打赏
  • 举报
回复
18到20行,list.get(i+1).toString()

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧