你的代码已经接近正确了,但有一个小错误需要修正。在内层循环中,你设置了 'j' 的初始值为 1,并且条件为 'j > i',这将导致内层循环无法执行。应该将条件改为 'j < 4',使其遍历剩余的元素。以下是修正后的代码:

#include<stdio.h>
int main()
{
    int nums[4] = { 2,7,11,15 };
    int target = 9;
    int* p = &nums[0];
    int* tar = &target;
    for (int i = 0; i < 4; i++)
    {
        for (int j = i + 1; j < 4; j++) // 将 j 的初始值改为 i+1,条件改为 j < 4
        {
            if (*(p + i) + *(p + j) == *tar)
                printf("[%d,%d]", i, j);
        }
    }
    return 0;
}

修正后的代码将正确地输出符合要求的两个数的索引 '[0,1]'。注意,这里的索引 '[0,1]' 表示数组中第一个数和第二个数。

祝你顺利解决 LeetCode 第一题!如有更多问题,欢迎随时提问。

LeetCode 第一道题:两数之和 - C语言代码详解与优化

原文地址: https://www.cveoy.top/t/topic/bg6G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录