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

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

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

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)

#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;  
}
相关文章
|
机器学习/深度学习 算法
【基础回顾】在回归任务中常见的损失函数比较(mse、mae、huber)
【基础回顾】在回归任务中常见的损失函数比较(mse、mae、huber)
1740 0
【基础回顾】在回归任务中常见的损失函数比较(mse、mae、huber)
|
存储 数据管理 物联网
深入解析数据仓库与数据湖:建构智能决策的桥梁
在当今信息时代,数据成为企业决策与创新的关键资源。本文将深入探讨数据仓库与数据湖的概念与应用,介绍其在数据管理和分析中的作用,以及如何构建智能决策的桥梁。
|
11月前
|
监控 关系型数据库 MySQL
Aurora MySQL负载突增应对策略与优化方案
通过以上策略,企业可以有效应对 Aurora MySQL 的负载突增,确保数据库在高负载情况下依然保持高性能和稳定性。这些优化方案涵盖了从架构设计到具体配置和监控的各个方面,能够全面提升数据库的响应速度和处理能力。在实际应用中,应根据具体的业务需求和负载特征,灵活调整和应用这些优化策略。
207 22
|
C#
如何使用c# 实现断点续传功能
如何使用c# 实现断点续传功能
242 0
|
存储 监控 关系型数据库
MySQL8 中文参考(二十八)(4)
MySQL8 中文参考(二十八)
324 1
|
敏捷开发 监控 数据可视化
敏捷开发:拥抱变化,持续交付价值的艺术(二)
敏捷开发:拥抱变化,持续交付价值的艺术(二)
202 2
|
存储 关系型数据库 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 多对一和多对多
【6月更文挑战第7天】该文探讨数据模型,比较了“多对一”和“多对多”关系。通过使用ID而不是纯文本(如region_id代替&quot;Greater Seattle Area&quot;),可以实现统一、避免歧义、简化修改、支持本地化及优化搜索。在数据库设计中,需权衡冗余和范式。文档型数据库适合一对多但处理多对多复杂,若无Join,需应用程序处理。关系型数据库则通过外键和JOIN处理这些关系。文章还提及文档模型与70年代层次模型的相似性,层次模型以树形结构限制了多对多关系处理。为克服层次模型局限,发展出了关系模型和网状模型。
163 6
|
消息中间件 存储 Java
RocketMQ技术详解:从基础知识到内部设计原理
RocketMQ技术详解:从基础知识到内部设计原理
507 2
|
Java 关系型数据库 MySQL
Shiro实战+springboot集成
Shiro实战+springboot集成
205 0
|
IDE 安全 Java
Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结
Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结
354 0
Java 版本、语言规范、API、JDK、IDE、Java 源程序编译、执行原理(跨平台性根本原因)、特殊字符用法、8 大数据类型小结