java数组 相同颜色距离最远的_Java在一个数组中找相邻最长的元素要怎么写?

展开全部

核心的函数如下:public int[] findLongest(char[] A) {

if (A == null || A.length == 0) {

return new int[]{ -1, -1 };

}

int start = 0, maxStart = 0;

int length = 1, maxLength = 1;

for (int i = 1; i 

if (A[i] == A[start]) {

length += 1;

if (length > maxLength) {

maxStart = start;

maxLength = length;

}

} else { // find a different element

start = i;

length = 1;

}

}

return new int[]{ maxStart, maxLength };

}

这个函数会返32313133353236313431303231363533e78988e69d8331333337616536回一个长度为2的数组。其中第一个数表示”相邻最长的元素“的起始位置,第二个数表示”相邻最长的元素“的长度(个数)。举例来说:

输入 { 'a', 'b', 'a', 'a', 'b', 'b', 'b', 'a' }

返回 { 4, 3 }

表示”相邻最长的元素“从第4个元素即 b 开始,一共有3个连续的b。

这样应该可以满足题主的需要了。

Java中,要根据一个包含40个元素的double数组拟合一条曲线并出最低点的整数下标,通常可以采用插值方法,如线性插值、多项式插值或者其他数值拟合算法。这里我们假设要用简单的线性插值为例,因为双曲顶函数(例如Sigmoid函数)可能会更精确,但线性插值比较简单。 首先,我们需要将数据点排序,然后通过两个相邻的数据点计算线性方程,这条方程可以用来估算中间值。对于寻最低点,我们可以遍历数组,每次比较当前点的y值(即曲线高度)和之前记录的最低点,如果新点更低,则更新最低点及其索引。 下面是一个简单的步骤: 1. **数据准备**:创建一个`double[] data`数组,并填充你的40个double值。 2. **数组排序**:对`data`按照数值大小进行升序排列。 3. **初始化**:设置初始最低点为第一个元素(`double minVal = data[0]`, `int minIndex = 0`),以及一个变量来存储最近的差值`(double prevDiff = Double.MAX_VALUE)`。 4. **线性插值和查最小值**:遍历数组从第二个元素开始,计算每个点和前一个点之间的线性差值。如果新的差值小于`prevDiff`并且当前点的y值更低,则更新`minVal`和`minIndex`。 5. **返回结果**:循环结束后,`minIndex`就是最低点的整数下标。 这是一个伪代码示例: ```java public class CurveFitting { public static int findLowestPoint(double[] data) { Arrays.sort(data); double minVal = data[0]; int minIndex = 0; double prevDiff = Double.MAX_VALUE; for (int i = 1; i < data.length; i++) { double diff = Math.abs(data[i] - data[i - 1]); if (diff < prevDiff && data[i] < minVal) { minVal = data[i]; minIndex = i; prevDiff = diff; } } return minIndex; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值