算法
文章平均质量分 61
lucky.麒麟
一样魔前千古间,独看桑蝶化人间。一叹求魔千万年,几多轮回古葬边。
展开
-
基础算法汇总之堆和优先队列
一. 简述这篇文章将介绍几种常见的队列,本文将重点介绍优先队列以及优先队列底层的二叉堆并且实现基础算法(go实现),最后还会介绍一样Java并发包中的四种最常用的队列,分析其源码和使用场景。那么下面就开始了!二. 队列介绍队列(queue)是一种先进先出的、操作受限的线性表。结构如下图:队列中关键的几个方法:// Queue 队列接口type Queue interface { Offer(interface{}) bool // 入队, 成功返回true, 已满返回false Po原创 2021-11-21 17:13:29 · 426 阅读 · 0 评论 -
基础算法汇总之哈希表
一. 什么是哈希表哈希表也叫做散列表,是一种可以根据关键key值直接访问的数据结构;简单说就是把关键的key值映射到数组中一个位置来访问记录,这样可以加快反应速度。这里面计算映射方法叫做散列函数也叫做哈希(hash函数),存放记录的数组叫做散列表。是一种典型的空间换时间的策略。这样当有一个数据来需要查询的时候,先通过散列函数计算出对应位置,在通过计算出位置的去查找,这样比直接查询所有数据速度块的。但是也需要注意这里的散列函数就要求效率要高。二. 哈希函数2.1. 简介哈希函数也叫散列函数,它对原创 2021-11-10 12:21:59 · 903 阅读 · 0 评论 -
基础算法汇总之AVL树实现
一. 什么是AVL树?在说AVL树之前,先回顾一下我们之前研究过的二分查找树(二分搜索树),在极端的情况下,二分搜索树会从一棵二叉树变为链表(按顺序插入数据)这样的查询效率会大打折扣。测试上一节二叉查找树在极端情况下的例子:为了解决这个问题,就需要通过增加一些属性和变化,将二叉查找树转为(在创建二叉树时候进行旋转让二叉树再次平衡)二叉平衡树。AVL树(由G.M.Adelson-Velsky和Evgenii Landis发明,AVL命名是使用两个人的名字缩写组成)是最早的自平衡二叉搜索树,AVL树原创 2021-10-25 22:49:44 · 417 阅读 · 0 评论 -
基础算法汇总之二叉搜索树实现
一. 树定义在计算机科学中,树 (英语:tree)是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。这个是学术定义,简单的大白话就是,树可以看成一串葡萄(自行脑补)。二. 树的种类下面列举了一些开发的时候常接触的树,简单做了下分类:三. 常用术语术语含义节点的度一个节点含有的子树的个数称原创 2021-10-20 11:48:18 · 251 阅读 · 0 评论 -
LeetCode之搜索插入位置
LeetCode之搜索插入位置一、题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例3:输入: [1,3,5,6], 7输出: 4示例4:输入: [1,3,5,6], 0输出: 0二、解题思路2.1. 方法一:比价啰嗦,但是好想func SearchI原创 2021-03-06 16:59:02 · 118 阅读 · 0 评论 -
LeetCode之有效的括号
LeetCode之有效的括号一、题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false示例5:输入:s = "{[]}"输出:tr原创 2021-02-27 11:01:44 · 129 阅读 · 0 评论 -
LeetCode之最长公共前缀
LeetCode之最长公共前缀一、题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例1:输入:strs = ["flower","flow","flight"]输出:"fl"示例2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。提示:0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i]原创 2021-02-27 10:02:29 · 122 阅读 · 0 评论 -
LeetCode之实现 strStr()
LeetCode之实现 strStr()一、题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例1:输入: haystack = "hello", needle = "ll"输出: 2示例2:输入: haystack = "aaaaa", needle = "bba"输出: -1说明:当 needle 是空字符原创 2021-02-26 23:21:48 · 167 阅读 · 0 评论 -
LeetCode之回文数
LeetCode之回文数一、题目描述给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例2:输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]二、解题思路2.1 转字符串从两头比较func isPa原创 2021-02-25 14:34:00 · 130 阅读 · 0 评论 -
LeetCode之转置矩阵
LeetCode之转置矩阵一、题目描述给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例2:输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]二、解题思路func transpose(matrix原创 2021-02-25 10:36:49 · 231 阅读 · 1 评论 -
LeetCode之两数之和
LeetCode之两数之和一、题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例2:输入:nums = [3,2,4],原创 2021-02-25 10:07:36 · 83 阅读 · 0 评论 -
Vue中Vuex的使用
VUEX的使用安装vuexnpm install vuex --save创建vue的store文件import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({ state: { city: '北京' }})在main.js中添加// ---...原创 2019-01-30 17:54:32 · 296 阅读 · 0 评论 -
彻底理解回溯和递归算法
回溯算法回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“...原创 2019-02-04 14:33:21 · 24471 阅读 · 4 评论 -
LeetCode之反转字符串
编写一个函数,其作用是将输入的字符串反转过来。示例 1:输入: "hello"输出: "olleh"示例 2:输入: "A man, a plan, a canal: Panama"输出: "amanaP :lanac a ,nalp a ,nam A"解答:public class Solution_1 { // 方法一: 效率慢,原始方式 public String r...原创 2018-10-24 13:45:19 · 203 阅读 · 0 评论 -
LeetCode之旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 ...原创 2018-10-29 10:26:45 · 184 阅读 · 0 评论 -
LeetCode之从排序数组中删除重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 ...原创 2018-10-16 15:07:04 · 212 阅读 · 0 评论