# 4425-实现比较
# 题目描述
In This Challenge, You should implement a type GreaterThan<T, U>
like T > U
Negative numbers do not need to be considered.
For example
GreaterThan<2, 1>; //should be true
GreaterThan<1, 1>; //should be false
GreaterThan<10, 100>; //should be false
GreaterThan<111, 11>; //should be true
Good Luck!
# 分析
又是一道计算的题目,如前文所说,ts 本身没有提供加减乘除运算,也没有提供比较大小的运算,所以想要比较大小,只能围绕元组的长度去想办法。
想要比较大小,可以设立一个元组,让这个元组不断变长,然后判断长度先达到 A 还是 B,先达到 A ,就证明 A 小,否则判断是否到达 B,到达 B,则 A 大。
# 题解
type GreaterThan<T extends number, U extends number, Arr extends any[] = []> =
// 先达到 T,则 T 小
T extends Arr['length']
? false
: // 先达到 U
U extends Arr['length']
? // 则 T 大
true
: // 都没到,膨胀元组
GreaterThan<T, U, [...Arr, 1]>;
# 知识点
- 元组长度模拟计算
# 2024-02-13 补充
后来本题又新增了超过 1000 的用例,此时由于递归深度的问题,会出现无法通过用例的问题。
此时可以参考 274-整数比较器 进行解决。本质是通过转为字符通过按位比较进行实现。
← 4260-实现全组合 4471-实现Zip →