LeetCode初级算法之其他:268.缺失的数字
题目信息给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。
题目地址:https://leetcode.cn/problems/missing-number/
示例 1:
123输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 2:
123输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。
示例 3:
123输入:nums = [9,6,4,2,3,5,7,0,1]输出:8解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。
示例 4:
123输入:nums = [0]输出:1解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。 ...
LeetCode初级算法之其他:20.有效括号
题目信息
题目地址:https://leetcode-cn.com/problems/valid-parentheses
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
示例 1:
12输入:s = "()"输出:true
示例 2:
12输入:s = "()[]{}"输出:true
示例 3:
12输入:s = "(]"输出:false
示例 4:
12输入:s = "([)]"输出:false
示例 5:
12输入:s = "{[]}"输出:true
题解一要满足括号的规则,那么一个括号里面不能有残缺的括号。 那么对于{[]} 它是一个括号且包含一个子括号,如果当当前括号完整时,子括号仍不完整即为false.
我们可以用包含自己和子节点的结构来去记录,就是一个链表,要必须按照 ...
风吹麦浪
《风吹麦浪》谱子收藏、全文查看👉
Elasticsearch详解
超长警告!!!善用目录!!!
[TOC]
一、什么是全文检索1.1 数据分类我们生活中的数据总体分为两种:结构化数据和非结构化数据。
**结构化数据:**指具有固定格式或有限长度的数据,如数据库,元数据等。
**非结构化数据:**指不定长或无固定格式的数据,如邮件,word 文档等磁盘上的文件
1.2 结构化数据搜索常见的结构化数据也就是数据库中的数据。
在数据库中搜索很容易实现,通常都是使用 sql语句进行查询,而且能很快的得到查询结果
为什么数据库搜索很容易?
因为数据库中的数据存储是有规律的,有行有列而且数据格式、数据长度都是固定的
1.3 非结构化数据查询方法1.3.1 顺序扫描法(Serial Scanning)用户搜索 → 文件
所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。如利用 windows 的搜索也可以搜索文件内容,只是相当的慢。
1.3.2 全文检索(Full-text Search)用户通过查询索 ...
轻松理解设计模式(结构型):7、装饰器模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容关于结构型设计模式中的装饰器模式的设计与实现。
定义
装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。——百度百科
在不改变原类文件下,去扩展功能其实大家都知道就是通过继承实现。这里相当于继承之外的另一种方式。百科定义说到扩展是通过用装饰来包裹真实的对象,这好像和前一篇适配器模式是比较相似的.
假设你最初去买碗面,那么通过选择的一个早餐店的获取一份早餐。最初早餐店只有面店 ...
轻松理解设计模式(结构型):6、适配器模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容关于结构型设计模式中的适配器模式的设计与实现。
定义
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。——百度百科
就是说两个东西需要交互连接,或者客户端使用一个产品。但它们两方接口对不上没办法直接使用。这时候需要有一个适配器,让它们建立连接。适配器包裹产品,客户端与适配器进行交互。如下图
type-c与3. ...
轻松理解设计模式(创建型):5、原型模式
前言
设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。
经过汇总的23种设计模式它是总结了面向对象设计当中最有价值的经验。对之前来讲可能是对其中部分设计模式还是相对来说熟悉的但仔细琢磨还是会有些疑问,正好在目前相对来说有更多的业余时间,可以来一次重新学习设计模式!
本篇内容关于原型模式。包含原型模式的设计与实现。
定义
原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。——维基百科
原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。
我们需要一系列对象,这些对象都是具有相同的特征,且它们都是独立的。就像马里奥里很多蘑菇人,它们是独立 ...
LeetCode初级算法之其他:118.杨辉三角
题目信息
题目地址:https://leetcode-cn.com/problems/pascals-triangle/
给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例 1:
12输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
示例 2:
12输入: numRows = 1输出: [[1]]
提示:
1 <= numRows <= 30
题解依题意知道当前数组的第j个值等于前一个数组的j-1的值加上j位的值,也就是
1arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
也就是通过双循环,第一层遍历各个数组,第二层遍历当前数组各个元素,中间元素的每个值通过上述公式计算
题解如下:
1234567891011121314151617181920212223242526272829public List<List<Integer>> g ...