Fork me on GitHub

Leetcode-1035-不相交的线

Leetcode-1035-不相交的线

题目描述

  • 在两条独立的水平线上按给定的顺序写下 nums1nums2 中的整数。
  • 现在,可以绘制一些连接两个数字 nums1[i]nums2[j]的直线,这些直线需要同时满足满足:
    • nums1[i] == nums2[j]
    • 且绘制的直线不与任何其他连线(非水平线)相交。
  • 请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。

示例 1:

mark

1
2
3
4
5
6
7
8
9
10
11
12
13
输入:nums1 = [1,4,2], nums2 = [1,2,4]
输出:2
解释:可以画出两条不交叉的线,如上图所示。
但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。

示例 2:

输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]
输出:3

示例 3:
输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]
输出:2
1
2
3
4
5
提示:

1 <= nums1.length <= 500
1 <= nums2.length <= 500
1 <= nums1[i], nums2[i] <= 2000
阅读更多...

Leetcode-1738-找出第 K 大的异或坐标值

Leetcode-1738-找出第 K 大的异或坐标值

题目描述

  • 给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。

  • 矩阵中坐标 (a, b) 可由对所有满足

    0 <= i <= a < m 且 0 <= j <= b < n 的元素 matrix[i][j]

    (下标从 0 开始计数)执行异或运算得到。

  • 请你找出 matrix 的所有坐标中第 k 大的值(k 的值从 1 开始计数)。

  • 注意:^ 表示 按位异或 操作

阅读更多...

Leetcode-1442-形成两个异或相等数组的三元组数目

Leetcode-1442-形成两个异或相等数组的三元组数目

题目描述

  • 给你一个整数数组 arr

  • 现需要从数组中取三个下标 ijk ,其中 (0 <= i < j <= k < arr.length)

  • a 和 b 定义如下:

    a = arr[i] ^ arr[i + 1] ^ ... ^ arr[j - 1]
    b = arr[j] ^ arr[j + 1] ^ ... ^ arr[k]

    注意:^ 表示 按位异或 操作

  • 请返回能够令 a == b 成立的三元组 (i, j , k) 的数目。

阅读更多...

Leetcode-993-二叉树的堂兄弟节点

Leetcode-993-二叉树的堂兄弟节点

题目描述

  • 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。
  • 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点
  • 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 xy
  • 只有与值 xy 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false

示例 1:

mark

1
2
输入:root = [1,2,3,4], x = 4, y = 3
输出:false

示例 2:

mark

1
2
输入:root = [1,2,3,null,4,null,5], x = 5, y = 4
输出:true

提示:

  • 二叉树的节点数介于 2100 之间。
  • 每个节点的值都是唯一的、范围为 1100 的整数。
阅读更多...

Leetcode-LCP006-拿硬币

Leetcode-LCP006-拿硬币

题目描述

  • 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。

输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。


示例 1:
输入:[4,2,1]
输出:4
解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。


示例 2:
输入:[2,3,10]
输出:8
  • 提示:
    • 1 <= n <= 4
    • 1 <= coins[i] <= 10
阅读更多...

图像学-色彩空间

图像学-色彩空间

  • 作为摄影师,你是不是遇到过这样的问题:相机设置里的色彩空间是什么意思? sRGB 和 Adobe RGB 有什么不同?为什么我的图片在 Photoshop 里看着好好的,一保存发布到网上色彩就变了?
  • 本篇文章将分为几个部分。首先从几个实验规律出发,借助线性代数相关的概念,定义色彩空间,然后介绍并推导几个重要的色彩空间之间的关系。

1. 实验基础

  • 相信大家都熟悉「三原色」理论,也知道现代显示器是按照 RGB 模式来显示色彩,不知道有没有想过,为什么是「三原色」?为什么是「三」这个数字?为什么一定要选择 RGB 红绿蓝三种颜色作为原色呢?选其他行不行?用四种颜色行不行?

  • 知乎上有个问题 红绿蓝三色是(唯一的)正交基吗? 就提出了这个疑问

  • 追根溯源的话,得从我们人类的视网膜说起。大部分人类的视网膜上有三种感知颜色的感光细胞,叫做视锥细胞,分别对不同波长的光线敏感,称为 L/M/S 型细胞。三种视锥细胞最敏感的波长分别是橙红色(长波,Long),绿色(中波,Medium),蓝色(短波,Short)。这三种视锥细胞的归一化感光曲线如下图所示(图片数据来自 CVLR

mark


可以看到 L 型视锥细胞与 M 型视锥细胞的感光曲线差别很小,实际上这两种视锥细胞起源于一次基因变异,在这之前人类可都是红绿色盲呢,多亏这个基因变异,让人类可以看到更加多彩的世界——这又是一个庞大的话题了,就此打住。

总之,大自然的这千千万万种颜色,在人类的眼里看到,最后传送到大脑里的信号,就只有这三种视锥细胞的电信号而已。根据这三种电信号的强弱,大脑解读成了不同的颜色。这就是三原色理论的生物学依据。


  • 不仅如此,人类眼睛对不同颜色光线混合的反应还是 线性 的。

  • 根据 格拉斯曼定律(Grassmann’s Law),两束不同颜色的光 [公式][公式],假设某个视锥细胞对他们的反应分别是 [公式][公式],现在将他们按照一个比例混合,得到第三种颜色 [公式],那么视锥细胞对这个混合颜色的反应也将是前两个反应的线性叠加 [公式]

  • 格拉斯曼定律是一个实验规律,并没有物理或者生物学上的依据。然而这个规律大大简化了我们对人类彩色视觉系统的建模,并且给我们使用线性代数理论分析人类彩色视觉系统提供了一个前提和基础。

阅读更多...

Leetcode-690-员工的重要性

Leetcode-690-员工的重要性

题目描述

给定一个保存员工信息的数据结构,它包含了员工 唯一的 id重要度直系下属的 id

比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。

那么员工 1 的数据结构是 [1, 15, [2]] ,员工 2的 数据结构是 [2, 10, [3]] ,员工 3 的数据结构是 [3, 5, []] 。

注意虽然员工 3 也是员工 1 的一个下属,但是由于 并不是直系 下属,因此没有体现在员工 1 的数据结构中。

  • 现在输入一个公司的所有员工信息,以及单个员工 id ,返回这个员工和他所有下属的重要度之和。
1
2
3
4
输入:[[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
输出:11
解释:
员工 1 自身的重要度是 5 ,他有两个直系下属 2 和 3 ,而且 2 和 3 的重要度均为 3 。因此员工 1 的总重要度是 5 + 3 + 3 = 11 。
阅读更多...

Leetcode-012-整数转罗马数字

Leetcode-012-整数转罗马数字

题目描述

  • 罗马数字包含以下七种字符: IVXLCDM
1
2
3
4
5
6
7
8
字符          数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
1
2
3
4
5
6
7
例如, 罗马数字 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 的范围内。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
示例 1:

输入: 3
输出: "III"

示例 2:

输入: 4
输出: "IV"

示例 3:

输入: 9
输出: "IX"

示例 4:

输入: 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.

示例 5:

输入: 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.

提示:

  • 1 <= num <= 3999
阅读更多...

Leetcode-1310-子数组异或查询

Leetcode-1310-子数组异或查询

题目描述

  • 有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]

  • 对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor ... xor arr[Ri])作为本次查询的结果。

  • 并返回一个包含给定查询 queries 所有结果的数组。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
输入:arr = [1,3,4,8], queries = [[0,1],[1,2],[0,3],[3,3]]
输出:[2,7,14,8]
解释:
数组中元素的二进制表示形式是:
1 = 0001
3 = 0011
4 = 0100
8 = 1000
查询的 XOR 值为:
[0,1] = 1 xor 3 = 2
[1,2] = 3 xor 4 = 7
[0,3] = 1 xor 3 xor 4 xor 8 = 14
[3,3] = 8


示例 2:

输入:arr = [4,8,2,10], queries = [[2,3],[1,3],[0,0],[0,3]]
输出:[8,0,4,4]
  • 提示:
    • 1 <= arr[i] <= 10^9
    • 1 <= arr.length <= 3 * 10^4
    • encoded.length == n - 1
    • 1 <= queries.length <= 3 * 10^4
    • 0 <= queries[i][0] <= queries[i][1] < arr.length
阅读更多...
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信