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

news2024/9/24 23:32:08

题目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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短波红外相机的原理及应用场景

短波红外 (简称SWIR&#xff0c;通常指0.9~1.7μm波长的光线) 是一种比可见光波长更长的光。这些光不能通过“肉眼”看到&#xff0c;也不能用“普通相机”检测到。由于被检测物体的材料特性&#xff0c;一些在可见光下无法看到的特性&#xff0c;却能在近红外光下呈现出来&…

使用Python Flask搭建Web问答应用程序并发布到公网远程访问

使用Python Flask搭建web问答应用程序框架&#xff0c;并发布到公网上访问 文章目录 使用Python Flask搭建web问答应用程序框架&#xff0c;并发布到公网上访问前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程…

AI Agent 结构与分类

一、什么是AI agent 在人工智能中&#xff0c;智能代理AI Agent是以智能方式行事的代理&#xff1b;它感知环境&#xff0c;自主采取行动以实现目标&#xff0c;并可以通过学习或获取知识来提高其性能。人其实就是一种复杂代理。 为了理解智能代理的结构&#xff0c;我们应该熟…

go写文件后出现大量NUL字符问题记录

目录 背景 看看修改前 修改后 原因 背景 写文件完成后发现&#xff1a; size明显也和正常的不相等。 看看修改前 buf : make([]byte, 64) buffer : bytes.NewBuffer(buf)// ...其它逻辑使得buffer有值// 打开即将要写入的文件&#xff0c;不存在则创建 f, err : os.Open…

Ruby和HTTParty库下载代码示例

ruby require httparty require nokogiri # 设置服务器 proxy_host "" proxy_port "" # 定义URL url "" # 创建HTTParty对象&#xff0c;并设置服务器 httparty HTTParty.new( :proxy > "#{proxy_host}:#{proxy_port}" ) …

不止有console.log()可以打印日志

1.带错误的打印 //1.醒目的打印 2.方便筛选器筛选 console.log("正常打印") console.warn("警告打印") console.error("错误打印") console.info("信息打印") console.log("%c带样式的打印", "color: red; font-size…

Nginx(十二) gzip gzip_static sendfile directio aio 组合使用测试(2)

测试10&#xff1a;开启gzip、sendfile、aio、directio1m&#xff0c;关闭gzip_static&#xff0c;请求/index.js {"time_iso8601":"2023-11-30T17:20:5508:00","request_uri":"/index.js","status":"200","…

论文阅读[2022sigcomm]GSO-Simulcast Global Stream Orchestration in Simulcast Video

GSO-Simulcast Global Stream Orchestration in Simulcast Video 作者&#xff1a; 1 背景 1视频会议成为全球数十亿人远程协作、学习和个人互动的核心&#xff0c;这些不断增长的虚拟连接需求推动视频会议服务的蓬勃发展 2当前用户越来越希望在低延迟下看到更高质量的视频…

【C/PTA —— 14.结构体1(课外实践)】

C/PTA —— 14.结构体1&#xff08;课外实践&#xff09; 一.函数题6-1 选队长6-2 按等级统计学生成绩6-3 学生成绩比高低6-4 综合成绩6-5 利用“选择排序算法“对结构体数组进行排序6-6 结构体的最值6-7 复数相乘运算 二.编程题7-5 一帮一7-6 考试座位号 一.函数题 6-1 选队长…

【Selenium+Webmagic】基于JAVA语言实现爬取js渲染后的页面,附有代码

事先声明 笔者最近需要查看一些数据&#xff0c;自己挨个找太麻烦了&#xff0c;于是简单的学了一下爬虫。笔者在这里声明&#xff0c;爬的数据只为学术用&#xff0c;没有其他用途&#xff0c;希望来这篇文章学习的同学能抱有同样的目的。 枪本身不坏&#xff0c;坏的是使用枪…

20:kotlin 类和对象 --泛型(Generics)

类可以有类型参数 class Box<T>(t: T) {var value t }要创建类实例&#xff0c;需提供类型参数 val box: Box<Int> Box<Int>(1)如果类型可以被推断出来&#xff0c;可以省略 val box Box(1)通配符 在JAVA泛型中有通配符?、? extends E、? super E&…

peft / bitsandbytes包windows安装问题

peft / bitsandbytes包windows安装问题 环境版本安装peftCUDA Setup failed despite GPU being available报错信息解决方法 ImportError: cannot import name is_npu_available from accelerate.utils报错信息解决方法 AttributeError: NoneType object has no attribute cuDev…

linux部署前端静态页面(实战)

Linux基本命令&#xff08;学习笔记&#xff09;零基础入门linux系统运维_linux find exec rm_Z_Xshan的博客-CSDN博客 如果linux不熟可以看我之前写的入门教程 感谢支持&#xff01;&#xff01; 一、服务器 这里去购买云服务器&#xff0c;如果是练习可以用虚拟机&#xff…

内网穿透的应用-公网环境下移动端通过群晖管家+cpolar远程管理家中本地局域网内黑群晖设备

白嫖怪狂喜&#xff01;黑群晖也能使用群晖管家啦&#xff01; 文章目录 白嫖怪狂喜&#xff01;黑群晖也能使用群晖管家啦&#xff01;1.使用环境要求&#xff1a;2.下载安装群晖管家app3.随机地址登陆群晖管家app4.固定地址登陆群晖管家app 自己组装nas的白嫖怪们虽然也可以通…

软件设计中如何画各类图之五用例图(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…

CopyOnWriteArrayList怎么用

什么是CopyOnWriteArrayListCopyOnWriteArrayList常用方法CopyOnWriteArrayList源码详解CopyOnWriteArrayList使用注意点CopyOnWriteArrayList存在的性能问题CopyOnWriteArrayList 使用实例基本应用实例并发应用实例 拓展写时复制 什么是CopyOnWriteArrayList CopyOnWriteArra…

2023经典软件测试面试题

1、问&#xff1a;你在测试中发现了一个bug&#xff0c;但是开发经理认为这不是一个bug&#xff0c;你应该怎样解决&#xff1f; 首先&#xff0c;将问题提交到缺陷管理库里面进行备案。 然后&#xff0c;要获取判断的依据和标准&#xff1a; 根据需求说明书、产品说明、设计…

2024清理软件排名第一的是CCleaner

CCleaner2024版是一款专业好用的系统优化和隐私保护工具。CCleaner官方版主要用来清除Windows系统不再使用的垃圾文件和使用者的上网记录以空出硬盘容量&#xff0c;按工具同时注重保护用户隐私&#xff0c;被誉为“世界上最受欢迎的PC清洁剂”。 CCleaner下载如下&#xff1a…

【23真题】押题卷的漏网之鱼!

今天分享的是23年中国计量大学805的信号与系统试题及解析。第二大题的第1小题这类题&#xff01;太经典了&#xff0c;他那个相位图像&#xff0c;怎么看都是24真题的样子图片。但是我出的话&#xff0c;会把幅频特性从三角变为矩形&#xff0c;再加上个信号是否无失真的判断。…

JavaEE进阶学习:Spring Boot 配置文件

1.配置文件的作用 整个项目中所有重要的数据都是在配置文件中配置的&#xff0c;比如&#xff1a; 数据库的连接信息&#xff08;包含用户名和密码的设置&#xff09;&#xff1b;项目的启动端口&#xff1b;第三方系统的调用秘钥等信息&#xff1b;用于发现和定位问题的普通…