[Typescript] 126. Hard - Two Sum

Given an array of integers nums and an integer target, return true if two numbers such that they add up to target.

/* _____________ Your Code Here _____________ */
type NumberToArray<N, ACC extends any[] = []> = ACC['length'] extends N ? ACC: NumberToArray<N, [...ACC, 1]>;

type RecursiveAdd<Current extends number, T extends number[], Target extends number> = T extends [infer F, ...infer RT extends number[]]
  ? [...NumberToArray<F>, ...NumberToArray<Current>]['length'] extends Target
    ? true
    : RecursiveAdd<Current, RT, Target>
  : false;

type TwoSum<T extends number[], U extends number> = T extends [infer F extends number, ...infer RT extends number[]]
  ? RecursiveAdd<F, RT, U> extends false
    ? TwoSum<RT, U>
    : true
  : false;

/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'

type cases = [
  Expect<Equal<TwoSum<[3, 3], 6>, true>>,
  Expect<Equal<TwoSum<[3, 2, 4], 6>, true>>,
  Expect<Equal<TwoSum<[2, 7, 11, 15], 15>, false>>,
  Expect<Equal<TwoSum<[2, 7, 11, 15], 9>, true>>,
  Expect<Equal<TwoSum<[1, 2, 3], 0>, false>>,
  Expect<Equal<TwoSum<[1, 2, 3], 1>, false>>,
  Expect<Equal<TwoSum<[1, 2, 3], 2>, false>>,
  Expect<Equal<TwoSum<[1, 2, 3], 3>, true>>,
  Expect<Equal<TwoSum<[1, 2, 3], 4>, true>>,
  Expect<Equal<TwoSum<[1, 2, 3], 5>, true>>,
  Expect<Equal<TwoSum<[1, 2, 3], 6>, false>>,
]

 

posted @   Zhentiw  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-12-04 [AWS] Creating a Private Hosted Zone and Associating It with Multiple VPCs
2020-12-04 [Java Spring] Spring Expression Language
2020-12-04 [Java Spring] @Profile
2020-12-04 [Java Spring] @Value & override properties by environment variables
2019-12-04 [Schematics] 2. EJS
2019-12-04 [Algorithm] Bitwise Operators
2019-12-04 [Algorithm] 136. Single Number
点击右上角即可分享
微信分享提示