前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每日一题(珠玑妙算,两数之和)

每日一题(珠玑妙算,两数之和)

作者头像
用户11039545
发布2024-03-28 17:38:45
950
发布2024-03-28 17:38:45
举报
文章被收录于专栏:c语言c语言

面试题 16.15. 珠玑妙算 - 力扣(LeetCode)

代码语言:javascript
复制
int* masterMind(char* solution, char* guess, int* returnSize)
//定义一个函数masterMind,它接受三个参数:solution(正确答案),guess(玩家的猜测)和returnSize(用于返回结果数组的大小的指针){
    int i=0,j=0;
    int realguess=0,virtualgess=0;
    do{
        if(solution[i]==guess[i]) realguess++,solution[i]='0',guess[i]='1';
        i++;
    }while(i<4);//do-while循环,用于检查solution和guess中的每一个字符是否相同。如果相同,则realguess增加1,并将这两个字符分别设置为'0'和'1'以标记它们已经被匹配过。
    i=0;//重置i为0,为下一个循环做准备
    do{//开始另一个do-while循环,用于检查guess中的字符是否在solution中出现,但不在相同的位置
        do{//内部do-while循环开始,用于查找guess[i]在solution中的位置
            if(guess[i]==solution[j]){
                virtualgess++;
                solution[j] = '0';
                break;
            }//如果guess中的字符在solution中的某个位置找到,则virtualgess增加1,并将该位置的solution字符设置为'0'以标记它已经被匹配过,然后跳出内部循环
            j++;//如果guess[i]不在solution[j]的位置,增加j的值以检查下一个位置
        }while(j<4);
        j=0;
        i++;
    }while(i<4);
    
        j=0;
    int *ret;
    ret = malloc(sizeof(int)*2);
    ret[0] = realguess;
    ret[1] = virtualgess;
    *returnSize = 2;
    return ret;
}

两数之和_牛客题霸_牛客网 (nowcoder.com)

代码语言:javascript
复制
#include <stdio.h>  
  
// 函数用于找到两个数,使它们的和等于目标值target  
// numbers是整型数组,numbersSize是数组的大小,target是目标值  
// 函数返回包含两个数下标的数组,下标从1开始计数  
// 如果找不到满足条件的两个数,函数返回NULL  
int* two_sum_without_hash(int* numbers, int numbersSize, int target, int* returnSize) {  
    if (numbers == NULL || numbersSize < 2 || returnSize == NULL) {  
        *returnSize = 0;  
        return NULL;  
    }  
  
    for (int i = 0; i < numbersSize; i++) {  
        for (int j = i + 1; j < numbersSize; j++) 
//这两行开始了一个双重循环,用于遍历数组中的每对元素。外层循环变量i从0开始,内层循环变量j从i + 1开始,这样可以确保我们不会重复检查相同的数对{  
            if (numbers[i] + numbers[j] == target) {  
                // 找到满足条件的两个数,返回它们的下标  
                int* result = (int*)malloc(2 * sizeof(int)); //如果找到了满足条件的数对,我们分配内存来存储它们的下标 
                if (result == NULL) {  
                    *returnSize = 0;  //这段代码检查输入参数的有效性。如果numbers数组为空、数组大小小于2,或者returnSize指针为空,函数会立即返回NULL,并将*returnSize设置为0
                    return NULL;  
                }  
                result[0] = i + 1; // 下标从1开始计数  
                result[1] = j + 1;  
                *returnSize = 2;  
                return result;  //如果内存分配成功,我们将数对的下标存储在result数组中,并将*returnSize设置为2,然后返回result数组
            }  
        }  
    }  
  
    // 没有找到满足条件的两个数  
    *returnSize = 0;  
    return NULL;  
}  
  
int main() {  
    int numbers[] = {2, 7, 11, 15};  
    int target = 9;  
    int returnSize;  
  
    int* result = two_sum_without_hash(numbers, sizeof(numbers) / sizeof(numbers[0]), target, &returnSize);  
  
    if (result != NULL) {  
        printf("Indices of the two numbers that sum up to %d are: %d and %d\n", target, result[0], result[1]);  
        free(result); // 释放分配的内存  
    } else {  
        printf("No two numbers found that sum up to %d\n", target);  
    }  
  
    return 0;  
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档