TypeScript 及算法准备

ops/2024/9/23 12:19:51/
TypeScript 基础
  1. 类型注解:为变量、函数参数和返回值指定类型。

    typescript复制代码let count: number = 10;function greet(name: string): string {return `Hello, ${name}!`;
    }
  2. 接口和类型别名:定义对象结构和复杂类型。

    typescript复制代码interface User {id: number;name: string;
    }type ID = number | string;
  3. 泛型:创建可重用的组件。

    typescript复制代码function identity<T>(arg: T): T {return arg;
    }let output = identity<string>("Hello");
  4. 类和接口:面向对象编程。

    typescript复制代码class Animal {name: string;constructor(name: string) {this.name = name;}move(distance: number = 0) {console.log(`${this.name} moved ${distance}m.`);}
    }interface Flying {fly(distance: number): void;
    }class Bird extends Animal implements Flying {fly(distance: number) {console.log(`${this.name} flew ${distance}m.`);}
    }

算法准备:数组扁平化

数组扁平化是指将多维数组转换为一维数组。以下是几种实现方式:

  1. 使用递归

    typescript复制代码function flattenArray(arr: any[]): any[] {let result: any[] = [];for (let item of arr) {if (Array.isArray(item)) {result = result.concat(flattenArray(item));} else {result.push(item);}}return result;
    }console.log(flattenArray([1, [2, [3, 4]], 5])); // [1, 2, 3, 4, 5]
  2. 使用reduce和递归

    typescript复制代码function flattenArray(arr: any[]): any[] {return arr.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenArray(val)) : acc.concat(val), []);
    }console.log(flattenArray([1, [2, [3, 4]], 5])); // [1, 2, 3, 4, 5]
  3. 使用栈

    typescript复制代码function flattenArray(arr: any[]): any[] {const stack = [...arr];const result: any[] = [];while (stack.length) {const next = stack.pop();if (Array.isArray(next)) {stack.push(...next);} else {result.push(next);}}return result.reverse();
    }console.log(flattenArray([1, [2, [3, 4]], 5])); // [1, 2, 3, 4, 5]

算法题:两个有序数组合并成一个有序数组

合并两个有序数组并保持有序,可以使用双指针法。

typescript复制代码function mergeSortedArrays(arr1: number[], arr2: number[]): number[] {let i = 0, j = 0;const result: number[] = [];while (i < arr1.length && j < arr2.length) {if (arr1[i] < arr2[j]) {result.push(arr1[i]);i++;} else {result.push(arr2[j]);j++;}}// 处理剩余元素while (i < arr1.length) {result.push(arr1[i]);i++;}while (j < arr2.length) {result.push(arr2[j]);j++;}return result;
}// 测试
const arr1 = [1, 3, 5, 7];
const arr2 = [2, 4, 6, 8];
console.log(mergeSortedArrays(arr1, arr2)); // [1, 2, 3, 4, 5, 6, 7, 8]


http://www.ppmy.cn/ops/88809.html

相关文章

在PAI-DSW中连接Neo4J,并批量创建知识图谱

我在 阿里云DSW实例中安装并运行Neo4J 中提到过&#xff0c;由于PAI-DSW的专有网络配置不能确保百分之百成功&#xff0c;因而很难实现通过本地的浏览器登录在PAI-DSW中启动的Neo4J图数据库。 我当时想出的一个解决办法是使用./cypher-shell语句在命令行登录neo4j&#xff0c;…

苹果手机升级iOS18测试版本后使用体验不好?怎么降级?

近期苹果发布了诸多的iOS18版本给用户提前尝鲜测试&#xff0c;许多果粉们都迫不及待的选择了升级&#xff0c;但是有不少的果粉升级时没有考虑到设备适配性问题&#xff0c;导致升级之后手机变得有些卡顿&#xff0c;使用体验不好时&#xff0c;想要降级回到正式的版本&#x…

【目标和】python刷题记录

R3-dp篇. 目录 思路&#xff1a; 增加记忆化搜索&#xff1a; 优化空间复杂度&#xff1a; 思路&#xff1a; class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:#设正数之和为p,总元素之和为s&#xff0c;带符号总元素之和为t&…

最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台

简介&#xff1a; 最新小猫咪PHP加密系统源码V1.4_完全本地化加密API接口_带后台 小猫咪PHP加密系统历时半年&#xff0c;它再一次迎来更新&#xff0c;更新加密算法&#xff08;这应该是最后一次更新加密算法了&#xff0c;以后主要更新都在框架功能上面了&#xff09;&…

如何确保PLC系统安全的可靠性,这几个注意事项你需要牢记

PLC&#xff08;可编程逻辑控制器&#xff09;是现代工业自动化系统中的关键组成部分。在设计 PLC 系统时&#xff0c;安全性是至关重要的考虑因素。本文将介绍 PLC 系统设计中的一些安全注意事项&#xff0c;包括电源设计、接地设计、关键数字量输入输出设计和报警设计。 一.…

新版Next.js 15中5个令人惊叹的特性

前端岗位内推来了 Next.js 15已经到来&#xff0c;一切比以往更好&#xff01; 从全新的编译器到700倍更快的构建时间&#xff0c;创建具有卓越性能的全栈Web应用从未如此简单。 让我们探索v15的最新特性&#xff1a; 1. create-next-app升级&#xff1a;更清晰的UI&#xff0c…

C:初识指针—学习笔记

目录 前言&#xff1a; 1、内存和地址 1.1 理解内存和地址 1.2 理解编址 2、指针变量和地址 2.1 取地址操作符&#xff1a;& 2.2 指针变量 2.3 如何拆解指针类型 2.4 解引用操作符&#xff08;*&#xff09; 2.5 指针变量的大小 3、指针变量类型的意义 3.1 指针…

如何在 Debian 上安装运行极狐GitLab Runner?【二】

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…