2020M8W5 ARTS

1. Algorithm: leetCode.414

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。

示例 1:

输入: [3, 2, 1]

输出: 1

解释: 第三大的数是 1.
示例 2:

输入: [1, 2]

输出: 2

解释: 第三大的数不存在, 所以返回最大的数 2 .
示例 3:

输入: [2, 2, 3, 1]

输出: 1

解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
存在两个值为2的数,它们都排第二。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/third-maximum-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

用一个长度有限的Set来保存前三个最大的数,python原生没有找到类似SortedSet的数据结构,所以在内部又加了一个判断

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        max_set = set()
        for num in nums:
            max_set.add(num)
            if len(max_set) > 3:
                ordered_max = sorted(list(max_set))
                max_set.remove(ordered_max[0])
        ordered_set = sorted(list(max_set))
        return ordered_set[1] if len(ordered_set) == 2 else ordered_set[0]

2. Review

3. Tip: MIME-sniffing

什么是MIME-sniffing

通常情况下浏览器通过Content-Type来分辨响应类型,当发现响应类型未指定或者类型错误时,会尝试启用MIME-sniffing来猜测的资源类型。

可能有什么危险

如果精心制作一张图片(或者音频之类),在其中嵌入可以被浏览器展示和执行的HTML和JavaScript代码。

如果未关闭MIME-sniffing,那么浏览器会直接执行嵌入的JavaScript,而不是显示图像。

也就是说攻击者可以利用MIME-sniffing发起[[XSS跨站脚本攻击]],对于网站以及访问者都会有危险。

如何避免MIME sniffing的问题

  • 在HTTP头部加入X-Content-Type-Options: nosniff,IE和Chrome会关闭MIME sniffing
    1. 但这也要求网站的提供者在响应中明确提供返回资源的类型
  • 另外可以使用一个单独的子域处理用户的上传请求,这样可以避免XSS攻击影响主站点

Reference

  1. What Is MIME Sniffing?

4. Share: 写文章也可以小步迭代,快速交付

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值