首页 > 其他分享 >【LeetCode】整数转罗马数字 C语言 | 此刻,已成艺术(bushi)

【LeetCode】整数转罗马数字 C语言 | 此刻,已成艺术(bushi)

时间:2024-03-10 10:47:12浏览次数:20  
标签:++ 复杂度 bushi else char 罗马数字 num C语言 LeetCode

Problem: 12. 整数转罗马数字

目录

思路

暴力破解 + 转换

解题方法

由思路可知

复杂度

时间复杂度:

$O(n)$

空间复杂度:

$O(1)$

Code

char* intToRoman(int num) {
    char *s = (char*)malloc(sizeof(char)*4000), *p = s;
    while(num > 0) {
        if(num >= 1000) {
            num -= 1000;
            *(p++) = 'M';
        } else if(num >= 900) {
            num -= 900;
            *(p++) = 'C';
            *(p++) = 'M';
        } else if(num >= 500) {
            num -= 500;
            *(p++) = 'D';
        } else if(num >= 400) {
            num -= 400;
            *(p++) = 'C';
            *(p++) = 'D';
        } else if(num >= 100) {
            num -= 100;
            *(p++) = 'C';
        } else if(num >= 90) {
            num -= 90;
            *(p++) = 'X';
            *(p++) = 'C';
        } else if(num >= 50) {
            num -= 50;
            *(p++) = 'L';
        } else if(num >= 40) {
            num -= 40;
            *(p++) = 'X';
            *(p++) = 'L';
        } else if(num >= 10) {
            num -= 10;
            *(p++) = 'X';
        } else if(num >= 9) {
            num -= 9;
            *(p++) = 'I';
            *(p++) = 'X';
        } else if(num >= 5) {
            num -= 5;
            *(p++) = 'V';
        } else if(num >= 4) {
            num -= 4;
            *(p++) = 'I';
            *(p++) = 'V';
        } else {
            num -= 1;
            *(p++) = 'I';
        }
    }
    *p = 0;
    return s;
}

标签:++,复杂度,bushi,else,char,罗马数字,num,C语言,LeetCode
From: https://www.cnblogs.com/Mryan2005/p/18063807

相关文章

  • C语言之兔子生产问题
    /#include<stdio.h>main(){longfib1=1,fib2=1,fib;//定义长整型变量,fib1表示当前前一个月的兔子数,fib2表示当前前两个月的兔子数,fib表示当前月份兔子数inti;//月份变量printf("%12ld%12ld",fib1,fib2);//输出第一个月和第二个月的兔子数,%ld用于输出长整型数据,而%12l......
  • ubuntu c语言 opencv实现h265 编码
    在Ubuntu上使用C语言和OpenCV实现H.265编码,你可以遵循以下步骤:安装依赖:首先确保你的系统已经安装了Ubuntu最新版本,并更新所有包列表。安装FFmpeg,因为OpenCV使用FFmpeg来处理视频编码。可以使用以下命令安装:复制sudoaptupdatesudoaptinstallffmpeg安装OpenCV:OpenCV库本......
  • LeetCodeHot100 283. 移动零 11. 盛最多水的容器 42. 接雨水 15. 三数之和
    283.移动零https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=top-100-likedpublicvoidmoveZeroes(int[]nums){intr=0;for(inti=0;i<nums.length;i++){if(nums[i]!=0){......
  • 代码随想录算法训练营day17 | leetcode 110. 平衡二叉树、257. 二叉树的所有路径、404
    目录题目链接:110.平衡二叉树-简单题目链接:257.二叉树的所有路径-简单题目链接:404.左叶子之和-简单题目链接:110.平衡二叉树-简单题目描述:给定一个二叉树,判断它是否是平衡二叉树示例1:输入:root=[3,9,20,null,null,15,7]输出:true示例2:输入:root=[1,2,2,3,3,null,nul......
  • C语言0基础入门游戏辅助开发—学习笔记02
    C语言0基础入门游戏辅助开发—学习笔记02PS:这里仅作为本人学习过程中的随笔。数据类型、sizeof运算符数据类型数据类型是在关键字内的,或者说关键字包含数据类型。数据类型有哪些程序中的代码和数据都是以二进制的形式存储的,对计算机系统和硬件而言,数据类型的概念不存在,这......
  • 2024-03-08 leetcode写题记录
    目录2024-03-08leetcode写题记录27.移除元素题目链接题意解法179.最大数题目链接题意解法75.颜色分类题目链接题意解法2024-03-08leetcode写题记录27.移除元素题目链接27.移除元素题意给你一个数组\(nums\)和一个值\(val\),你需要原地移除所有数值等于\(val\)的元素,并......
  • C语言基础-1、数组
    一、数组数组可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间数组是长度固定的数据结构,用来存放指定的类型数据一个数组里可以有很多个数据所有的数据的类型都是相同的二、定义数组<类型>变量名称[元素数量];intgrades[100];doubleweight[20];元素......
  • 【LeetCode】977. 有序数组的平方
    题目:977.有序数组的平方解题思路:分析题目,左侧负数的平方可能超过右侧正数的平方,所以考虑使用双指针法,从左右向中间遍历最大值将遍历结果放入新创建的数组中,返回数组由于该问题的传入数组大小不确定,故只能使用动态数组创建方法,malloc方法导入<math.h>,使用abs绝对值比较函数,......
  • 【LeetCode】209. 长度最小的子数组
    题目:209.长度最小的子数组解题思路:初始化最小长度,设置为最大值,当最小长度变小时,该值更新设置left和right指针,left指针用于记录左边界,当求和sum大于target时,左指针右移;right指针记录右边界,当求和sum小于target时,右指针右移,继续寻找符合要求的子字符串。当右边界符合题目要求......
  • 2023-03-07 leetcode写题记录
    2023-03-07leetcode写题记录目录2023-03-07leetcode写题记录148.排序链表题目链接题意解法归并排序56.合并区间题目链接题意解法复健中,第一次重新写链表题。写链表题需要注意下面这些事项:写链表时,可以把链表理解成一个数,只不过这个数有特殊含义,代表着一个地址;"->"是对地......