力扣刷题day1(两数相加,回文数,罗马数转整数)

题目1:1.两数之和

思路1和解析:

//1.暴力枚举解法(历遍两次数组,时间复杂度O(N^2),空间复杂度O(1)
int* twoSum(int* nums, int numsSize, int target, int* returnSize) 
{
    for (int i = 0; i < numsSize; ++i) //从数组第一个位置开始
    {
        for (int j = i + 1; j < numsSize; ++j)//从固定位置的下一个位置开始找
        {
            if (nums[i] + nums[j] == target) //找到的时候
            {
                int* ret = malloc(sizeof(int) * 2);//在内存中分配足够的空间用来存储两个整数的大小,并将指向这块空间的指针赋值给了ret。
                //换句话说,这行代码使用了C语言中的malloc函数来动态分配了两个整数大小的内存空间,并将指向这块内存空间的指针保存在了ret变量中。
                ret[0] = i, ret[1] = j;//将变量i的值存储在ret指向的内存空间的第一个位置,j存在第二个位置
                *returnSize = 2;//将包含数组大小的值设置为2
                return ret;//返回指向数组的指针ret
            }
        }
    }
    *returnSize = 0;
    return NULL;//不存在,返回空指针
}

 思路2和解析:

// 向哈希表中插入新条目或更新现有条目
void insert(int ikey, int ival)
{
    struct hashTable* it = find(ikey); // 查找具有指定键的条目
    if (it == NULL) // 如果条目不存在
    {
        struct hashTable* tmp = malloc(sizeof(struct hashTable)); // 分配内存以创建新条目
        tmp->key = ikey, tmp->val = ival; // 设置新条目的键和值
        HASH_ADD_INT(hashtable, key, tmp); // 将新条目添加到哈希表中
    }
    else // 如果条目已经存在
    {
        it->val = ival; // 更新现有条目的值
    }
}

// 在数组中查找两个数字,使它们的和等于目标值
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
    hashtable = NULL; // 初始化哈希表
    for (int i = 0; i < numsSize; i++) // 遍历输入数组
    {
        struct hashTable* it = find(target - nums[i]); // 查找当前数字的补数在哈希表中是否存在
        if (it != NULL) // 如果在哈希表中找到了补数
        {
            int* ret = malloc(sizeof(int) * 2); // 分配内存以创建结果数组
            ret[0] = it->val, ret[1] = i; // 设置结果数组为找到的两个数字的索引
            *returnSize = 2; // 设置返回数组的大小为2
            return ret; // 返回结果数组
        }
        insert(nums[i], i); // 将当前数字及其索引插入哈希表
    }
    *returnSize = 0; // 如果没有找到解,则将返回数组的大小设置为0
    return NULL; // 返回NULL
}

题目2:9.回文数

思路1和解析:

//回文数
//1.
bool isPalindrome(int x)
{
    if (x < 0)
        return false;//因为负数不可能是一个回文数
    long int a, b = 0;//创建变量,注意变量范围
    a = x;//存储a值
    //逆序求值,如果相当说明是回文数
    while (a != 0)
    {
        b = b * 10 + a % 10;
        a = a / 10;
    }
    if (x == b)
        return true;
    else
        return false;
}

思路2和解析:

//2.
bool isPalindrome(int x)
{
    char s[20];
    int i;
    sprintf(s, "%d", x);//将字符类型转换为整型
    int l = strlen(s);//计算长度
    for (i = 0; i < l / 2; i++)
    {
        if (s[i] != s[l - i - 1])//看对应位上的数字是否相当,如果是奇数位,中间位不用管
        {
            return false;//发现不相当就不是回文数,反之就是
        }
    }
    return true;
}

题目3:13.罗马数字转整数

思路和解析: 

//罗马数字转整数
int getHash(char c) //传入字符
{
    switch (c) //根据传入字符选择对应的值
    {
    case 'I':
        return 1;
    case 'V':
        return 5;
    case 'X':
        return 10;
    case 'L':
        return 50;
    case 'C':
        return 100;
    case 'D':
        return 500;
    case 'M':
        return 1000;
    default:
        return 0;
    }
}

int romanToInt(char* s) 
{
    int ret = 0;//创建个变量用来存储值
    for (int i = 0; s[i]; i++) 
    {
        if (getHash(s[i]) < getHash(s[i + 1]))
        {
            ret += (-getHash(s[i]));//小于的时候,比如IV,I<V,IV是4,就是V-I
        }
        else//反之就是大于,不存在特殊情况,直接加上去就行
        {
            ret += getHash(s[i]);
        }
       /* ret += getHash(s[i]) < getHash(s[i + 1]) ? -getHash(s[i]) : getHash(s[i]);*/
    }
    return ret;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/218486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【恋上数据结构】二叉堆学习笔记

二叉堆 需求分析 Top K 问题 什么是 Top K 问题&#xff1f; 从海量数据中找出前 K 个数据。 比如&#xff1a;从 100 万个整数中找出最大的 100 个整数Top K 问题的解法之一&#xff1a;可以用数据结构 “堆” 来解决。 堆 堆是一种【完全二叉树】&#xff0c;可以分为【…

SpringBoot自定义异常处理机制

说明&#xff1a;在完整的项目结构中&#xff0c;我们通常会创建一套自定义的异常处理机制&#xff0c;在系统可能出现异常的地方手动抛出这些异常&#xff0c;可以快速定位到异常代码片段&#xff0c;提高系统的可维护性。 本文介绍在SpringBoot项目中&#xff0c;搭建一套自…

2023.12.1 --数据仓库之 拉链表

目录 什么是拉链表 为什么要做拉链表? 没使用拉链表: 使用了拉链表: 题中订单拉链表的形成过程 实现语句 什么是拉链表 拉链表是缓慢渐变维的一种解决方案. 拉链表,记录每条信息的生命周期,一旦一条记录的生命周期结束,就重新开始一条新的记录,并把当前日期放入生效开始…

EI论文复现:基于组合双向拍卖的共享储能机制研究程序代码!

本程序参考EI期刊论文《基于组合双向拍卖的共享储能机制研究》&#xff0c;文中的组合双向拍卖交易机制较为新颖&#xff0c;本质上属于博弈范畴&#xff0c;共享储能是目前的研究热点&#xff0c;牵涉到共享储能参与者的投标策略和收益函数&#xff0c;文中所提模型可为电力市…

【兔子王赠书第10期】零基础入门Python,看这篇就够啦!

文章目录 写在前面推荐图书前言为什么要学习编程如何学习编程本书内容获得帮助 推荐理由粉丝福利写在后面 写在前面 粉丝福利第10期来啦&#xff0c;本期博主给大家推荐一本非常适合零基础入门Python的图书&#xff1a;《Python超能学习手册》&#xff0c;祝大家读完本书后都可…

深入微服务架构 | 微服务与k8s架构解读

微服务项目架构解读 ① 什么是微服务&#xff1f; 微服务是指开发一个单个小型的但有业务功能的服务&#xff0c;每个服务都有自己的处理和轻量通讯机制&#xff0c;可以部署在单个或多个服务器上。 微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说&…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(5)》(21)

《Linux操作系统原理分析之linux存储管理&#xff08;5&#xff09;》&#xff08;21&#xff09; 6 Linux存储管理6.6 Linux 物理空间管理6.6.1 Linux 物理内存空间6.6.2 物理页面的管理6.6.3 空闲页面管理——buddy 算法 6.7 内存的分配与释放6.7.1 物理内存分配的数据结构 6…

运维工具之MobaXterm工具安装和使用

一、MobaXterm工具简介 MobaXterm是远程计算的终极工具箱。在一个Windows应用程序中&#xff0c;它提供了大量的功能&#xff0c;这些功能是为程序员、网站管理员、it管理员以及几乎所有需要以更简单的方式处理远程工作的用户量身定制的。MobaXterm在一个开箱即用的可移植exe文…

ros2与stm32通讯比较优秀的串口库

这个是我确定的串口库&#xff1a;serial: serial::Serial Class Reference (wjwwood.io) 我也不知道其他的串口库了&#xff0c;我就知道几个&#xff0c;然后我觉得这个是3个里面学习周期比较短&#xff0c;然后质量比较可靠的库 我隐隐觉得这个串口库就是ros1选择的串口库…

如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问

目录 前言 1. Ubuntu安装SVN服务 2. 修改配置文件 2.1 修改svnserve.conf文件 2.2 修改passwd文件 2.3 修改authz文件 3. 启动svn服务 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射本地端口 5. 测试公网访问 6. 配置固定公网TCP端口地址 6.1 保留一个固定…

SVN 版本管理

SVN 文件状态 这里有一张图片可以说明&#xff1a;

C#中内置的泛型委托Func与Action

简介 从C# 3.0起很少需要自己声明委托。System.Func 是一个泛型委托&#xff0c;它可以表示带有返回值的方法。它可以接受一个到多个输入参数&#xff0c;并返回一个指定类型的结果。System.Func 委托的最后一个类型参数表示方法的返回值类型。而System.Action系列代表返回voi…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑富氧燃烧技术的电–气–热综合能源系统低碳经济调度》

这个标题涉及到一个关于能源系统和经济调度的复杂主题。让我们逐步解读&#xff1a; 电–气–热综合能源系统&#xff1a; 指的是一个综合的能源系统&#xff0c;包括了电力、气体&#xff08;可能是天然气等&#xff09;、热能等多个能源形式。这种系统的设计和优化旨在使不同…

vue+electron问题汇总

1. Vue_Bug Failed to fetch extension, trying 4 more times 描述&#xff1a;项目启动时报错 解决&#xff1a;注释图片中内容 2. Module not found: Error: Can’t resolve ‘fs’ in 描述&#xff1a;项目启动报错 解决&#xff1a;vue.config.js中添加图中数据 3.导入…

8.7 矢量图层点要素点分布(Point displacement)使用

文章目录 前言点分布&#xff08;Point displacement&#xff09;QGis代码实现 总结 前言 前面介绍了矢量-点要素-单一符号、矢量-点要素-分类符号、矢量-点要素-分级符号以及矢量-点要素-基于规则的使用本章介绍如何使用点分布&#xff08;Point displacement&#xff09;说明…

Java集合常见问题

目录 Java集合 1.前言2.集合3.Collection接口类3.1 List接口3.1.1 ArrayList&#xff08;常用&#xff09;3.1.2 LinkedList&#xff08;常用&#xff09;3.1.3 Vector&#xff08;不常用&#xff09; 3.2 Set接口3.2.1 HashSet&#xff08;常用&#xff09;3.2.2 LinkedHash…

软件设计中如何画各类图之五用例图(Use Case Diagram):系统功能需求与用户交互的图形化描述

目录 1 前言2 用例图基本介绍3 用例图的符号及说明3.1 用例&#xff08;Use Case&#xff09;3.2 参与者&#xff08;Actor&#xff09;3.2 关系&#xff08;Relationships&#xff09; 4 画用例图的步骤4.1 确定系统边界4.2 识别参与者4.3 定义用例4.4 绘制关系4.5 完善细节 5…

webpack学习-2.管理资源

webpack学习-2.管理资源 1.这章要干嘛2.加载css注意顺序&#xff01; 3.总结 1.这章要干嘛 管理资源&#xff0c;什么意思呢&#xff1f;管理什么资源&#xff1f;项目中经常会 导入各种各样的css文件&#xff0c;图片文件&#xff0c;字体文件&#xff0c;数据文件等等&#…

双目光波导AR眼镜_AR智能眼镜主板PCB定制开发

AR眼镜方案的未来发展潜力非常巨大。随着技术的进步&#xff0c;AR眼镜的光学模块将变得更小巧&#xff0c;像素密度也会增加&#xff0c;实现更高分辨率的画面&#xff0c;甚至能够达到1080P、2K和4K级别的清晰度&#xff0c;从而提升用户的视觉体验。 AR智能眼镜的硬件方面&a…

spring cloud nacos整合gateway

文章目录 gateway快速入门创建gateway服务&#xff0c;引入依赖编写启动类编写基础配置和路由规则重启测试网关路由的流程图 断言工厂过滤器工厂路由过滤器的种类请求头过滤器默认过滤器总结 全局过滤器全局过滤器作用自定义全局过滤器过滤器执行顺序 跨域问题什么是跨域问题解…