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

如何优化嵌套for循环,提升无符合条件时的代码执行速度?

优化C#两数之和查找性能的方案

原代码通过嵌套for循环查找数组中是否存在两个不同元素之和为7777,最坏情况(无符合条件的元素对)时间复杂度为O(n²),数据量较大时耗时极高。以下是优化方案,将时间复杂度降至O(n):

优化思路

利用哈希集合(HashSet<int>)存储已遍历的元素,对每个元素计算目标补值(7777 - 当前元素):

  • 若集合中已存在该补值,说明之前遍历过的元素与当前元素之和为7777,且二者是不同位置的元素,直接输出"Yes"并终止程序。
  • 若不存在,将当前元素加入集合,继续遍历。

这种方式只需遍历数组一次,最坏情况下也仅需O(n)的时间和空间开销,远快于嵌套循环。

优化后的代码

替换原代码中case 1内的逻辑:

case 1:
    HashSet<int> seen = new HashSet<int>();
    foreach (int num in A)
    {
        int complement = 7777 - num;
        if (seen.Contains(complement))
        {
            Console.WriteLine("Yes");
            return;
        }
        // 先判断再加入,避免同一元素被重复匹配(确保是两个不同元素)
        seen.Add(num);
    }
    Console.WriteLine("No");
    break;

额外优化点

  1. 原代码中N变量已读取但未使用,可以直接用N初始化数组,避免依赖data2.Length:
    int[] A = new int[N];
    for (int i = 0; i < N; i++)
    {
        A[i] = int.Parse(data2[i]);
    }
    
  2. 若需适配严格输入校验场景,可增加格式异常捕获,但算法题场景通常默认输入格式合法,可忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:35:18