zoukankan      html  css  js  c++  java
  • Day 8

    第13题:

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

    字符 数值
    I 1
    V 5
    X 10
    L 50
    C 100
    D 500
    M 1000
    例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

    通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

    I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
    X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
    C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
    给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。来源:力扣(LeetCode)

    1、题目给定一个罗马数字,将其转化为整数,首先用switch将对应的罗马数字和所对应的整数相互连接;

      在函数中可以先将罗马数字利用switch转化为整数;

      因为罗马数字当前一位比自身小的时候,这两位组成的数就是自身减去前一位的值;

      所以可以判断自身和前一位的大小关系,如果num>presun,则将presum加到sum中,如果num<presum则将sum减去presum;

      如此循环下去,可得最后结果。(也可以将所有的组合序列添加到switch中,由此就可以判断其中两位是否存在,存在则后移两位,不存在则一位一位的后移)

      

    第1437题:

    给你一个由若干 0 和 1 组成的数组 nums 以及整数 k。如果所有 1 都至少相隔 k 个元素,则返回 True ;否则,返回 False 。(来自LeetCode)

    1、其实就是定义两个指针一样的l、r来计算两个1之间的0个数;

      先将l指向第一个1的位置;然后再将r指向下一个1的位置,由两者计算中间的个数;

      在比较k,返回结果。

      

    2、也可以直接判断1后面是不是有k个0;如果少于k个,直接false;

      先考虑特殊情况,k为0时,返回true;

      在遍历数组,如果为0,后移,为1,则开始for循环判断后面的k位里是不是有1,有返回false;

      如果k后面都是0,那么就跳到这些0的后一位,继续判断。

      

  • 相关阅读:
    窗口设置背景图片
    双链表
    单链表
    Hough直线检测
    轮廓跟踪
    轮廓提取
    基于腐蚀的二值图像距离变换
    创建对话框用于交互
    hello world
    c#---params参数
  • 原文地址:https://www.cnblogs.com/liang-yi-/p/13179946.html
Copyright © 2011-2022 走看看