回溯算法学习笔记
什么是回溯算法?回溯算法通过穷举来解决问题,暴力搜索,遇到正确的解则记录,在某个状态无法前进或无法满足条件时,回退到上一步状态,再尝试其他的选择。回溯算法通常采用深度优先搜索进行遍历。
[!NOTE]
回溯算法适合处理无法预测哪些是有效的解,必须对所有可能的解进行遍历的情况。因此并不适合处理大规模或复杂问题。
时间复杂度:由于需要遍历所有可能的解,可能会达到O(n^k)。
空间复杂度:需要在遍历过程中记录当前状态,随着深度的增大,对空间的需求也会增大。
回溯算法常见的问题全排列无重复元素全排列详情请见LeetCode-46 全排列。
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
示例1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例3:输入:nums = [1]输出:[[1]]
思路
将生成结果的过程看 ...
使用docker安装Oracle 19c
下载镜像
拉取镜像。 1docker pull registry.aliyuncs.com/zhuyijun/oracle:19c
查看镜像是否下载成功。 1docker images
部署Oracle容器
创建挂载文件,将数据和配置挂载到本机。 1mkdir -p /mydata/oracle/oradata
部署并启动容器。 1docker run -d -p 1521:1521 -p 5500:5500 -e ORACLE_SID=<Your SID> -e ORACLE_PDB=<Your PDB> -e ORACLE_PWD=<Your Password> -e ORACLE_EDITION=standard -e ORACLE_CHARACTERSET=AL32UTF8 -v /mydata/oracle/oradata:/opt/oracle/oradata --name oracle registry.aliyuncs.com/zhuyijun/oracle:19c
ORACLE_SID、ORACLE_PDB和ORACLE_P ...
Vue3仿哔哩哔哩顶部导航菜单
顶部菜单分析
通过观察可以发现,整个页面分为顶部导航和页面主体两个部分。而顶部导航在默认状态下为非固定状态,页面向下滚动时会遮盖住导航菜单。但是,当我们向下滚动一定距离后,导航栏会变为固定状态,即使页面滚动也始终保持在顶部。 直到将页面向上滚动到顶部后,导航栏又会恢复非固定状态。
所以,我们可以代码页面分为三个部分:
非固定导航菜单栏
固定导航菜单栏
页面主体其中,默认显示非固定导航菜单栏,当页面向下滚动一定距离后,显示固定导航菜单栏。此时非固定导航菜单栏依旧存在,只是被固定导航菜单栏遮盖住了。
代码实现页面模板首先,先确定页面的三个部分,并通过css确定页面的大致布局:
12345678910111213141516171819202122232425262728293031<template> <div class="home"> <div class="navigation-bar"> 非固定导航菜单栏 </div> <div cl ...
HTML从手写标签到自动生成
HTML语法HTML元素以成对的标签表示,代表开始和关闭。例如:<p>一个段落</p>。部分标签可以在开始标签内进行关闭:
1<img src="/images/logo.png" width="258" height="39" />
在HTML中,我们可以为标签设置属性。属性以name="value"的形式写在标签内。
1<a href="http://www.bilibili.com">这是一个链接</a>
HTML基础学习标题标题通过<h1>到<h6>一共六个标签定义。<h1>是最大的标题,<h6>是最小的标题。
123456<h1>我是一号标题</h1><h2>我是一号标题</h2><h3>我是一号标题</h3><h4>我是一号标题</h4><h5>我是一号标题< ...
普通的Markdown语法教程
基础语法标题与正文标题从最外层到最里层一共六层。标题的格式为# 标题文本。最外层为一级标题,只有一个#号,然后依次是二级标题##,三级标题###,直到最内层######。正文直接输入就行,无须任何语法。
文本格式文本格式分为加粗、倾斜、删除线和高亮四种。
加粗:使用两组*号包围。例如:**我是加粗文本**。
倾斜:使用一组*号包围。例如:*我是倾斜文本*。
删除线:使用两组~号包围。例如:~~我是删除线文本~~。
==高亮==:使用两组=包围。例如:==我是高亮文本==。
代码代码使用` `包围。例如:`java -version` => java -version。
数学公式数学公式使用$ $包围。例如:$a+b>c$ => $a+b>c$。居中的公式采用如下形式:
123$$公式块$$
$$a+b<c$$
特殊数学符号常用的数学符号如下:
代码
符号
说明
\not=
$\not=$
不等于
\approx
$\approx$
约等于
\times
...
Git的安装与使用
Git的安装
在官网下载最新的安装包:点击前往
设置全局用户名和邮箱。 12git config --global user.name "your name"git config --global user.email "your email"
配置本地仓库
选择一个目录,在该目录打开Git并输入命令:git init,会生成一个.git隐藏目录,该目录所在的目录就是我们的工作目录。
通过git status可以查看当前目录的状态。
12On branch masterNo commits yet
该目录如果被成功配置,则会显示上述内容,这表示目前没有任何提交。
添加和提交
在工作目录下随便创建一个文件,例如:helloworld.txt,并执行git status查看文件状态。这表示我们的文件处于未追踪状态,Git不会记录它的变化,而是把它当作一个新创建的文件。
通过git add helloworld.txt将文件添加到暂存区,并使用git status查看文件状态。
通过git commit -m "提交描述&quo ...
Kotlin基础学习从入门到入土
Kotlin基础数据类型在kotlin中,变量使用var关键字声明,常量使用val关键字声明。
变量声明可以通过变量名:数据类型的形式显式声明,也可以通过自动推导的方式声明。
123456//通过【变量名:数据类型】的形式声明变量var name: String = "Soria"val age: Int = 18//可以不显式声明数据类型,可以自动推导var height = 1.75var weight = 55
Kotlin支持八种基本数据类型:Byte、Short、Int、Long、Float、Double、Char、Boolean。
数字类型
数字类型包括Byte、Short、Int、Long、Float、Double。
1234567891011val byteNum: Byte = 127val shortNum: Short = 32767val intNum: Int = 2147483647val longNum: Long = 9223372036854775807Lval floatNum: Float = 3.14Fval double ...
Apache Maven快速上手
Maven的项目结构
src目录下分为main和test目录,分别用于存放源码和测试代码。
main目录下分为java和resource目录,分别用于存放java源码和静态资源文件(包括图片、配置文件等)。
pom.xml是Maven的核心配置,包括项目的依赖、插件以及各种配置。 <groupId>、<artifactId>、<version>用于唯一区别每个项目。
groupId一般用于指定组名称,命名规则一般和包名一致,一个组下面可以有很多个项目。
artifactId一般用于指定项目在当前组中的唯一名称。
version 代表项目版本。参考示例: 12345678910111213141516 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2 ...