leetcode-罗马数字与阿拉伯数字的转换

罗马数字与阿拉伯数字互相转换(难度:中等)

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

罗马数字 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。

阅读更多...

session与cookie

应用场景

cookie:
登录网站,第一天输入用户名密码登录了,第二天再打开很多情况下就直接打开了。这个时候用到的一个机制就是cookie。

session:
session一个场景是购物车,添加了商品之后客户端处可以知道添加了哪些商品,而服务器端如何判别呢,所以也需要存储一些信息就用到了session。

阅读更多...

leetcode-平衡二叉树

平衡二叉树(难度:简单)

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。

这道题可以想到的最简单得方法是从根节点递归遍历二叉树,对于遍历到的节点依次对左右子树求二叉树的深度,然后对比两个深度之差,若超过1,则不是平衡二叉树。但这样做的问题依然是递归过程会产生大量的重复计算,时间复杂度是O(n * logn)。

因此这道题可以反过来想,从底向上遍历二叉树,这样就不会产生重复的计算。我们使用后序遍历的思想,先遍历当前根节点的左右子树,这样就可以求得当前根节点的深度以及直到当前根节点所在的子树是不是平衡二叉树,然后当前根节点遍历的结果又可以作为它的父亲节点计算的依据,实现一个从下往上的计算。
阅读更多...

ipv4与ipv6

地址大小

ipv4

长度为 32 位(4 个字节)。地址由网络和主机部分组成,这取决于地址类。根据地址的前几位,可定义各种地址类:A、B、C、D 或 E。IPv4 地址的总数为 4 294 967 296。
IPv4 地址的文本格式为 nnn.nnn.nnn.nnn,其中 0<=nnn<=255,而每个 n 都是十进制数。可省略前导零。最大打印字符数为 15 个,不计掩码。

阅读更多...

360的抽奖

360的抽奖

抽奖箱内现有m+n张奖票,m张中奖的,n张不中奖的,现在a和b两个人来轮流抽奖,a抽一张b抽一张,谁先抽到有奖的谁赢。由于b是a的爸爸,b暴打了a一顿之后迫使a答应了b一个特权,b每次抽完一张之后可以再抽一张,但是第二次抽出来的这张直接丢弃,不算b的结果。问:输入m和n,在a先抽的情况下求a获胜的概率(抽奖全程不放回)

阅读更多...
  • Copyrights © 2015-2021 AURORA_ZXH
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信