02 2023 档案
摘要:事件流 捕获 目标 冒泡 回流和重绘 减少回流和重绘的次数 css样式一次性修改 const root=document.getElementById('root') root.style.cssText='padding:10px 20px 30px' 使用fragment文件碎片 fragmen
阅读全文
摘要:设计模式 1.装饰者模式 不改变对象自身代码的基础上新增功能 // 装饰者模式 // 不改变对象自身代码的基础上新增功能 let a = ()=>{ console.log('a'); } // 开闭原则 // let newa = ()=>{ // console.log('a'); // con
阅读全文
摘要:1. webpack 定义 用于现代JavaScript的静态模块打包工具 解决的问题 模块依赖 代码编写 less 转css ts转js 开发效率 热加载 项目优化 压缩,打包 2. loader 的执行顺序 less-loader->css-loader->style-loader 栈 3. 实
阅读全文
摘要:1. 生命周期 Vue2 11个 beforeCreate created beforeMount mounted beforeUpdate updated beforeDestory destoryed activited deactivited errorCaptured 2. v-if 和v-
阅读全文
摘要:1. 生命周期 老版本16.3及以前 新版本16.4 及以后 1.2 错误处理的生命周期 static getDerivedStateFormError componentDidCatch 2. 父子通讯 父传子 props Prototype Methods 即把子组件写成一个非受控组件,父组件定
阅读全文
摘要:1. forEach,forin,forof forEach 数组使用,无返回值,无法break跳出 forin 数组,对象使用 forof 数组,对象,map,set,类数组(伪数组) 共同点 无下标,操作更简洁,效率高 2. var,let,const var 变量提升 直接赋值,全局作用域 l
阅读全文
摘要:1. 原型和原型链 1.1 原型 js中,函数可以有属性,每个函数都有一个特殊的属性叫做原型prototype(原型) 1.2 原型链 当我们访问某个对象的属性时,如果该对象本身没有,就会到对象的原型中去寻找定义,如果原型也没有,就再向原型对象的原型中寻找,依此类推,如果最顶层的对象也没有,则返回u
阅读全文
摘要:1. 盒模型定义 css规范的一个模块 定义一个长方形的盒子 包含内外边距,边框 标准定义上分分类 IE盒模型 width=width+padding+border height=height+padding+border 标准盒模型 width=width height=height 元素类型上分
阅读全文
摘要:动态规划 算法设计的一种思想 将问题分解为==相互重叠==的子问题,对子问题进行求解,从而解决原问题 1. 动态规划和分治 区别 分治的子问题,==相互独立==,互不干扰 动态规划的子问题==相互重叠== 如斐波那契求和:f(n)=f(n-1)+f(n-2):f(n-1) 和f(n-2) 之间是不是
阅读全文
摘要:LeetCode 133. 克隆图 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node { public int val; public List<Node> neighb
阅读全文
摘要:分治 算法设计的一种方法 将一个问题分成和原问题相似的小问题,递归解决,再将结果合并为原来的问题 场景 归并排序 快速排序 二分查找 LeetCode 226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6
阅读全文
摘要:回溯算法 算法设计的一种思想 渐进式寻找解决问题的方法 从一个可能的动作开始解决问题,如果改动作不行,就回溯到最初的状态,选择另一种动作解决问题 LeetCode 46. 全排列 难度中等2249收藏分享切换为英文接收动态反馈 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可
阅读全文
摘要:排序 1. 冒泡排序 1. 对于一个数组,比较所有的相邻的元素,如果第一个大于第二个,则交换 2. 比较一轮下来,可以保证一个元素是有序的 3. 在比较n-1 轮,整个数组就排序好了 代码实现 // 将排序算法挂载到原型链上 Array.prototype.bubbleSort = function
阅读全文
摘要:贪心算法 算法设计思想 期盼通过每个阶段的最优,来达到全局的最优 结果并不一定是最优的 LeetCode 455. 分发饼干 难度简单582收藏分享切换为英文接收动态反馈 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i]
阅读全文
摘要:图 一个二元关系 图的表示法 邻接矩阵 邻接表 图的遍历 深度优先搜索 访问根节点(开始节点) 循环访问没有访问过的邻接节点(递归,新节点跳回第一步) 广度优先搜索 维护一个队列 节点入队(第一次开始节点) 节点出队并访问,把当前节点没有访问过的邻接节点入队(循环第三步,直到队列为空) LeetCo
阅读全文
摘要:5.3 Spring Data Redis 5.3.1 介绍 Spring Data Redis 是 Spring 的一部分,提供了在 Spring 应用中通过简单的配置就可以访问 Redis 服务,对 Redis 底层开发包进行了高度封装。在 Spring 项目中,可以使用Spring Data
阅读全文
摘要:4.4 功能测试 代码编写完毕之后,我们需要将工程重启。 然后访问前端页面, 进行 "启用" 或 "禁用" 的测试。 测试过程中没有报错,但是功能并没有实现,查看数据库中的数据也没有变化。但是从控制台输出的日志, 可以看出确实没有更新成功。 而在我们的数据库表结构中, 并不存在该ID, 数据库中 风
阅读全文
摘要:4. SpringCache 4.1 介绍 Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。 Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager
阅读全文
摘要:4.3.2 修改菜品信息 4.3.2.1 代码实现 点击保存按钮,页面发送ajax请求,将修改后的菜品相关数据以json形式提交到服务端。在修改菜品信息时需要注意,除了要更新dish菜品表,还需要更新dish_flavor菜品口味表。 1). 在DishService接口中扩展方法updateWit
阅读全文
摘要:1.3.2 ThreadLocal ThreadLocal并不是一个Thread,而是Thread的局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 Threa
阅读全文
摘要:1. 文件上传下载 1.1 上传介绍 1.1.1 概述 文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。 文件上传时,对页面的form表单有如下要求: | 表
阅读全文
摘要:4). DishServiceImpl中实现方法saveWithFlavor 页面传递的菜品口味信息,仅仅包含name 和 value属性,缺少一个非常重要的属性dishId, 所以在保存完菜品的基本信息后,我们需要获取到菜品ID,然后为菜品口味对象属性dishId赋值。 具体逻辑如下: ①. 保存
阅读全文
摘要:2.6 全局异常处理 2.6.1 思路分析 要想解决上述测试中存在的问题,我们需要对程序中可能出现的异常进行捕获,通常有两种处理方式: A. 在Controller方法中加入 try...catch 进行异常捕获 形式如下: 如果采用这种方式,虽然可以解决,但是存在弊端,需要我们在保存其他业务数据时
阅读全文
摘要:1.3 代码实现 1). 定义登录校验过滤器 自定义一个过滤器 LoginCheckFilter 并实现 Filter 接口, 在doFilter方法中完成校验的逻辑。 那么接下来, 我们就根据上述分析的步骤, 来完成具体的功能代码实现: 所属包: com.itheima.reggie.filter
阅读全文
摘要:2. 项目部署 之前我们讲解Linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目的就是将来我们开发的项目绝大部分情况下都需要部署在Linux系统中。那么在本章节,我们将通过两种方式,来演示项目部署,分别是:手动部署项目 和 基于shell脚本自动部署。 2.1 手动部署项目 1)
阅读全文
摘要:4.5 代码开发 在OrderController中创建submit方法,处理用户下单的逻辑 : /** * 用户下单 * @param orders * @return */ @PostMapping("/submit") public R<String> submit(@RequestBody
阅读全文
摘要:mysql redis ./redis-serve nginx: ./nginx 源springboot项目: nohup java -jar helloworld-1.0-SNAPSHOT.jar &> hello.log & springboot项目部署到服务器的注意点 application.
阅读全文
摘要:依赖注入,注入配置文件中的属性名 1.2 加载properties文件 上节中我们已经完成两个数据源druid和C3P0的配置,但是其中包含了一些问题,我们来分析下: 这两个数据源中都使用到了一些固定的常量如数据库连接四要素,把这些值写在Spring的配置文件中不利于后期维护 需要将这些值提取到一个
阅读全文
摘要:另起一行快捷键 shift+enter >ctrl+enter 设置字号17,行距1.2,字体Consolas 自动导包 创建一个类自动生成注释信息
阅读全文
摘要:使用场景:父组件需要使用到子组件的data时 例子 父组件有list数组,传递给子组件,子组件将数组中的属性全部显示出来,但是用什么标签显示这些属性不确定(使用插槽) 父组件传递插槽内容过去替换子组件的slot,问题来了,内容是数组项的第几个呢? 子组件将数组项内容回传父组件,通过插槽(作用域插槽)
阅读全文
摘要:父组件监听事件时==事件处理函数直接写名称,不加上()== ==有参数也是如此==
阅读全文
摘要:简单类型不需要加上引号 ==如对象user.name(注意加上引号)== watch:{ "obj.name":{ ... } } 侦听器的应用(存入本地存储localStorage) 也可以在==组件销毁时存入本地存储== watch: { list: { handler(){ // 2. 存入本
阅读全文
摘要:vue关闭代码检查 eslint的代码检查 vue.config.js module.exports={ lintOnSave:false }
阅读全文
摘要:click只是个例子,可以换成change,blur..... @click.prevent 阻止默认行为 @click.stop 阻止事件冒泡 @click.once ==click后面函数只执行一次==
阅读全文
摘要:例子 <span @click="fn(10,$event)"></span> 不传递参数时,默认第一参数为$event 传递参数时,如果需要event对象,需要显示传递
阅读全文
摘要:this.arr[0]=1 等价于 this.$set(this.0,1) Vue.set( target, propertyName/index, value ) 参数: {Object | Array} target {string | number} propertyName/index {a
阅读全文
摘要:
阅读全文
摘要:简单写法,给计算属性赋值报错 ==解决方案==:提供set方法 实例(全选-->反选,反选->全选) <template> <div> <span>全选:</span> <!-- 4. v-model 关联全选 - 选中状态 --> <input type="checkbox" v-model="i
阅读全文
摘要:之前经常使用的 this.arr.filter(item=>item.id!==id) 另一种方法 let index=this.arr.findIndex(item=>item.id id) this.arr.splice(index,1)
阅读全文
摘要:通过==this.$refs.ref名称获取组件对象== 不仅仅只是获取到绑定该Ref的Dom元素 其中的一切都变成可调用的 // 调用组件方法,突破了父子组件相互通信的繁琐的问题 this.$refs.myRef.submit() // 获取data或者计算属性 this.$refs.myRef.
阅读全文
摘要:Prop节点接受父组件传值的校验 export default { props: { arr: { type: Array, required: true, // 自定义校验规则 validator(value) { // value就是接到数组 if (value.length >= 2 && v
阅读全文
摘要:2. vue路由 - 声明式导航 2.0 声明式导航 - 基础使用 目标: 可用全局组件router-link来替代a标签 vue-router提供了一个全局组件 router-link router-link实质上最终会渲染成a链接 to属性等价于提供 href属性(to无需#) router-l
阅读全文
摘要:原理:this.$nextTick(函数体)返回的是一个promise对象 可以使用async/await 简化操作
阅读全文
摘要:.lazy change是触发而非input触发 即失去焦点才把值赋给视图v .trim .number
阅读全文
摘要:如果图片不在本地,在某个服务器上,如http://www.xxx.com/1.png js 中直接使用 <script> data(){ return { url:'http://www.xxx.com/1.png' } } </script> 如果图片在本地呢? ==不能使用相对路径==:./as
阅读全文
摘要:在之前对promise对象的处理 使用==Promise原型函数then,catch== 解决回调地狱的问题,但存在冗余代码 .then().then().then() ==async await es8(esma 2017) 引入== await Promise() await Promise()
阅读全文
摘要:使用position:fix,top,left,right,bottom 实现置顶(置底) 问题:主体内容会被这个遮住 解决方法 主体内容设置上下padding,保证内容完全可见
阅读全文
摘要:LeetCode 66. 加一(模板题) 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits = [1,2,3] 输出:[1,2
阅读全文
摘要:1.前缀和 前n个元素的和作为当前元素的值 a 为元素数组 s[i] 为前缀和数组 一维前缀和 s[i]=s[i-1]+a[i] s[m]-s[n]=a[n+1]+...+a[m] m>n 二维前缀和 s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j] L
阅读全文
摘要:更加严谨的二分 使用场景 满足类似的条件,需要找的某个数>=target 或者<=target 一般的二分 只会判断是否满足==的条件 对于边界的点会舍弃 造成有可能找不到正确的答案 二分模板 判断>=target 的情况 // 序列为0-n-1 // 为什么设置n,n为不合法的情况,即没有比tar
阅读全文
摘要:1. 三分查找 场景 序列不满足单调增或者单调减 但满足局部的单调性 即只存在波峰或者只存在波谷 求波峰和波谷 我们并不字段波峰和波谷在哪里 定义域l-r 我们在定义域里任取两数lmid,rmid 对于f(lmid)<=f(rmid),说明极大值在 lmid-r 对于f(lmid)>=f(rmid)
阅读全文
摘要:二叉搜索树 @(文章目录) 1. 定义 左子树小于根节点 右子树大于根节点 2. 求某个节点的后继 概念:比当前节点大的最小节点 节点存在右子树 先找到右子树 一路往左走,直到空树 节点不存在右子树 后继可能存在于查找到改节点的路上 3. 求节点的前驱 比当前节点小的最大节点 节点存在左子树 先找到
阅读全文
摘要:239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3
阅读全文
摘要:Echarts使用第一天 1.使用 示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="
阅读全文
摘要:JavaScript高级第01天笔记 1.面向过程与面向对象 1.1面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 1.2面向对象 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。 1.3面向过程与面向对象对
阅读全文
摘要:JavaScript高级第02天笔记 1.构造函数和原型 1.1对象的三种创建方式--复习 字面量方式 var obj = {}; new关键字 var obj = new Object(); 构造函数方式 function Person(name,age){ this.name = name; t
阅读全文
摘要:JavaScript高级第03天笔记 1.函数的定义和调用 1.1函数的定义方式 方式1 函数声明方式 function 关键字 (命名函数) function fn(){} 方式2 函数表达式(匿名函数) var fn = function(){} 方式3 new Function() var f
阅读全文
摘要:JavaScript高级day04 1. 正则表达式 1.1 什么是正则表达式 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式,在js中,正则表达式也是对象 1.2 创建正则表达式 通过调用RegExp对象的构造函数创建 var 变量名=new RegExp(/表
阅读全文
摘要:vue3 与vue2的区别 1. template节点 vue2只允许一个根节点 vue3允许多个根节点 2. 创建工具 vue3:使用vite,也可使用vue-cli vue2:使用vue-cli vite创建 3. 调试工具 vue-2:标准版 vue3:bate版本 4. 使用vite的注意点
阅读全文
摘要:Vue3的特性 1. 新的构建工具 vite 1.2 基本使用 vite基本使用: 创建项目 npm init vite-app 项目名称 或者 yarn create vite-app 项目名称 安装依赖 npm i 或者 yarn 启动项目 npm run dev 或者 yarn dev 1.3
阅读全文
摘要:一些注意点 1、配置vue项目支持es6语法 在package.json文件中新增type节点 package.json { "type": "module", } 2. Vuex的挂载 Vue.use方法调用了一个install的方法 vuex中,使用辅助函数的形式引入mutations,如果不携
阅读全文
摘要:es6模块化 1. 设置es6的模板规范 package.json中配置 node.js默认支持commonjs规范 修改为es6规范 "type": "module", 2. 解构赋值来按需导入 2.1 按需导出和默认导出同时使用 导出模块 // 按需导出 export let a1=10 exp
阅读全文
摘要:vue(八)头条项目 1. 项目结构 根据vue create my-toutiao创建项目 勾选上router 2. 生成的项目中的view文件夹和compoent文件夹 都是用于存放组件 view中的组件是通过路由来切换的 compoent文件夹中的组件是可以复用的UI结构 3. 将axios封
阅读全文
摘要:Vue(六) 1. 前端路由 hash值与组件之间的对应关系 hash值代表url地址中#号后面的内容, 不同的hash地址对应不同的组件 图解 1.2 简易路由 <template> <div class="app-container"> <h1>App 根组件</h1> <!-- 定义hash值
阅读全文
摘要:vue(五) 1.动态组件 组件的显示与隐藏切换 1.1 <component> 组件 组件的一个占位符 通过设置属性来显示不同的组件 is属性来指定要显示哪个属性 示例 <template> <div class="app-container"> <h1>App 根组件</h1> <hr /> <
阅读全文
摘要:Vue(四) 1. 生命周期 一个组件从(创建->运行->销毁的整个阶段) 生命周期函数:vue框架的内置函数,会随着组件的生命周期,自动按次序执行 注意点 生命周期强调整个时间段 生命周期函数指时间点 1.1 示例:Test组件的生命周期函数 <template> <div> <h3 class=
阅读全文
摘要:Vue(三) (Vue-cli) 1. 单页面应用程序(SPA) 一个web网站只有唯一的html页面 2. vue-cli 简化了webpack创建工程化Vue项目的全过程 不需要自己去配置webpack,只需专心写页面 2.1 安装 全局包 代码 npm i -g @vue/cli 2.2 创建
阅读全文
摘要:vue入门(二) 1. 过滤器 一个函数 在插值表达式中使用,对插值的值进行再处理 {{username | toUpCase}} 示例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="
阅读全文
摘要:vue入门(一) 1. 什么是vue 一个框架(现有的解决方案) 构造用户界面(操作html页面的内容) 2. vue的特性 数据驱动视图 页面所依赖的数据发生变化时,vue会监听数据的变化,重新渲染页面 双向数据绑定 页面所依赖的数据发生变化时,vue会监听数据的变化,重新渲染页面 页面中的表单数
阅读全文
摘要:webpack的使用(配合ppt) 1.webpack 前端工程化的具体解决方案 作用 代码压缩混淆 处理浏览器端的JavaScript兼容性 性能优化 1.1 基于webpack实现隔行变色 npm i jquery -S 中-S(--save的简写)表示保存到dependencise节点中,其中
阅读全文
摘要:递归 递归,将问题分解为重叠的子问题,f(n)=f(n-1)+xxx,满足这样的状态转移方程,说明原问题是不是依赖递归子问题,即f(n)依赖f(n-1) 确定递归出口 递归返回时还原现场 78. 子集(模板题) 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)
阅读全文
摘要:Node.js学习第四天 1. 基本使用 安装 npm i express@4.17.1 创建最基本的web服务器 const express=require('express') const app=express() app.listen(80,()=>{ console.log('expres
阅读全文
摘要:1. 贪心 贪心能解的题,搜索也可以解 贪心只是提高的效率,不保证正确性 860. 柠檬水找零(贪心模板) 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你
阅读全文
摘要:Node.js学习第三天 1.模块化 1.1 模块化的定义 模块化指解决一个复杂问题时,自顶向下逐层把系统划分为若干模块的过程。对应整个系统来说,模块是可组合、分解、更换的单元 1.2 编程领域的模块化 遵守固定的规则,把一个大文件拆分成独立并相互依赖的多个小模块 好处 提高了代码的复用性 提供了代
阅读全文
摘要:Node.js学习第二天 1. http模块 概念:用来创建web服务器的模块,提供http模块提供的http.createServer()方法,就能把一台普通的电脑,变成一台web服务器,从而对外提供web服务 1.1 http模块的使用 需要导入该模块 const http=require('h
阅读全文
摘要:HTML+CSS部分复习(蓝桥杯参考) 0. 考前准备 插件安装 设置:文件自动格式化 1. web标准 结构(HTML) 表现(CSS) 行为(js) 2. 前端插件安装 3. img的border属性 属性值:数字,单位:像素 边框粗细 4. a标签target属性 链接打开方式 默认值_sel
阅读全文
摘要:NodeJs 复习 1. 什么是 NodeJS ==node.js 是==基于 chorm 浏览器 v8 引擎的==JavaScript 运行环境== 2. NodeJS 的模块 3. fs 模块(文件读取模块) // 导入fs文件系统模块 const fs = require('fs') // 读
阅读全文
摘要:ajax复习 1. 为什么叫ajax async JavaScript and XML 异步JavaScript和XML 2. jQuery发起ajax请求 get $(function() { $("button").on("click", function() { // 发起get请求 // r
阅读全文
摘要:1. getElementsByTagName 返回值为一个伪数组对象(其他获取多个元素的方法也是如此) ==注意遍历方式== 2. 获取特殊元素body和html // 获取body var bodyEle=document.body // 获取html var htmlEle=document.
阅读全文
摘要:变长数组 实现方法(三步) 初始化,分配常数空间 在插入元素的过程中,如果空间不够,新建一个2倍原来空间长度的数组,把原数组的值拷贝到扩容的数组中,释放原数组空间 如果扩容后元素有删除的情况,但总元素个人少于数组长度25,释放一半的空间 时间复杂度分析(==这里n>length才扩容,解释不是非常合
阅读全文
摘要:双指针 一般解决分段的问题,即求某一段的数据的值 i为指针起点,j为指针终点 一种是滑动窗口,i,j一定方向相同 一种是夹逼,i,j相向 配合前缀和使用 a[i]+....a[j]=s[j]-s[i-1] LeetCode 167. 两数之和 II - 输入有序数组(模板题) 给你一个下标从 1 开
阅读全文
摘要:原地快排模板 /** * @param {number[]} nums * @return {number[]} */ var sortArray = function(nums) { const partition=(arr)=>{ // 生成0-arr.length-1的随机数 let mid=
阅读全文
摘要:哈希表-集合-映射 874. 模拟行走机器人 机器人在一个无限大小的 XY 网格平面上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令 commands : -2 :向左转 90 度 -1 :向右转 90 度 1 <= x <= 9 :向前移动 x 个单位长度 在网
阅读全文
摘要:589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 示例 1: 输入:root = [1,null,3,2,4,null,5,6] 输出:[1,3,5,6,
阅读全文
摘要:求子集 上图把问题抽象成为图的遍历 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23" 输出:["ad","a
阅读全文