# 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]>;

# 知识点

  1. 元组长度模拟计算

# 2024-02-13 补充

后来本题又新增了超过 1000 的用例,此时由于递归深度的问题,会出现无法通过用例的问题。

此时可以参考 274-整数比较器 进行解决。本质是通过转为字符通过按位比较进行实现。

Last Updated: 2024/2/13 04:54:47