You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测列表中6个连续递减值并设置ChartData对象颜色?

解决连续6个递减ChartVal的ChartData着色问题

需求说明

遍历ChartData列表,将所有属于连续6个及以上ChartVal严格递减的元素的ChartColour设为Red,其余元素设为Black。例如输入序列[10,9,8,7,6,5,5,6,7,8],前6个递减元素全部标红,剩余元素标黑。

核心思路

不能边遍历边直接判定当前元素的颜色,因为需要确认后续元素是否能凑够连续6个递减值。因此分两步处理:

  1. 先遍历一次数据,标记出所有长度≥6的连续递减序列的起止索引区间
  2. 根据标记的区间,为对应元素设置颜色,其余元素设为默认黑色

完整代码实现

public class ChartData
{
    public int ChartVal { get; set; }
    public string ChartColour { get; set; }
    // 其他属性
}

// 获取原始数据
var rawData = _myDataService.GetChartData();
var chartDataList = rawData.Select(d => new ChartData { ChartVal = d.Value }).ToList();

// 第一步:识别所有符合条件的连续递减序列区间
var validRedIntervals = new List<(int StartIndex, int EndIndex)>();
int currentSequenceStart = 0;

for (int i = 1; i < chartDataList.Count; i++)
{
    // 检查当前值是否严格小于前一个值(保持递减)
    if (chartDataList[i].ChartVal < chartDataList[i - 1].ChartVal)
    {
        continue;
    }

    // 序列中断,检查当前序列长度是否达标
    int sequenceLength = i - currentSequenceStart;
    if (sequenceLength >= 6)
    {
        validRedIntervals.Add((currentSequenceStart, i - 1));
    }

    // 更新新序列的起始索引
    currentSequenceStart = i;
}

// 检查最后一个未处理的序列
int lastSequenceLength = chartDataList.Count - currentSequenceStart;
if (lastSequenceLength >= 6)
{
    validRedIntervals.Add((currentSequenceStart, chartDataList.Count - 1));
}

// 第二步:为元素设置颜色
// 先标记所有符合条件的元素为红色
foreach (var interval in validRedIntervals)
{
    for (int i = interval.StartIndex; i <= interval.EndIndex; i++)
    {
        chartDataList[i].ChartColour = "Red";
    }
}

// 剩余未标记的元素设为黑色
foreach (var item in chartDataList)
{
    if (string.IsNullOrWhiteSpace(item.ChartColour))
    {
        item.ChartColour = "Black";
    }
}

// 最终用于图表的数据集
IList<ChartData> dataForChart = chartDataList;

关键细节说明

  • 严格递减判定:代码中使用chartDataList[i].ChartVal < chartDataList[i - 1].ChartVal,如果需求允许非严格递减(即允许相等),只需将<改为<=即可。
  • 多序列处理:如果存在多个长度≥6的递减序列,代码会自动识别所有符合条件的区间并标记红色。
  • 边界处理:循环结束后额外检查最后一个序列,避免遗漏末尾的有效递减序列。

内容的提问来源于stack exchange,提问作者tcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 09:40:57