数据结构与算法
温一杯酒
这个作者很懒,什么都没留下…
展开
-
【四】算法入门分析----回溯
一、简单概述回溯法(back tracking)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。==回溯法按深度优先策略搜索问题的解空间树。==首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利...转载 2019-10-19 16:01:13 · 366 阅读 · 0 评论 -
【二】算法入门分析----动态规划
一、基本概念动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达...转载 2019-10-19 11:49:15 · 118 阅读 · 0 评论 -
【一】算法入门分析----分治算法
分治算法一、基本概念字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)二、基本思想及策略分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各...转载 2019-10-18 21:35:21 · 212 阅读 · 0 评论 -
算法--数组
二分查找Leetcode35:查找插入位置(二分查找easy)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。(二分查找注意边界条件)class Solution { public int searchInsert(int[] nums, int target) { ...原创 2019-08-20 21:59:30 · 193 阅读 · 0 评论 -
算法--栈和队列
目录设计《剑指offer》面试题9:用两个栈实现队列(栈队列)《剑指offer》面试题9(相关题):用两个队列实现栈(栈队列)《剑指offer》面试题30:包含min函数的栈(栈)《剑指offer》面试题59(题目二):包含max函数的队列(队列)其它《剑指offer》面试题31:栈的压入弹出序列(栈)Leetcode20:有效的括号(栈easy)Leet...原创 2019-08-26 07:57:12 · 104 阅读 · 0 评论 -
算法--数学
目录斐波那契数列《剑指offer》面试题10(题目一):斐波那契数列(动态规划)《剑指offer》面试题10(题目二):跳台阶(动态规划)《剑指offer》面试题10(题目三):变态跳台阶(动态规划)《剑指offer》面试题10(题目四):矩形覆盖(动态规划)特殊《剑指offer》面试题49:丑数Leetcode36:有效数独(哈希表medium)Leetco...原创 2019-08-26 07:58:40 · 820 阅读 · 0 评论 -
算法--图
遍历 《剑指offer》面试题13:机器人的运动范围(DFS) Leetcode62:左上角到右下角的路径数(DFS动态规划medium) Leetcode63:左上角到右下角的路径数II(DFS动态规划medium) Leetcode64:左上角到右下角的最短路径(DFS动态规划medium) Leetcode130:被包围的区域(DFSmedium) L...原创 2019-08-26 07:59:29 · 110 阅读 · 0 评论 -
算法--设计
目录Leetcode146:LRU缓存机制(哈希表链表hard)Leetcode208:实现Trie树(前缀树)(Trie设计medium)Leetcode341:扁平化嵌套列表迭代器(栈medium)Leetcode380:实现O(1)的插入删除与随机获取(哈希表medium)Leetcode146:LRU缓存机制(哈希表链表hard)Leetcode20...原创 2019-08-26 08:00:50 · 104 阅读 · 0 评论 -
算法--海量数据
目录公共部分《王道程序员求职宝典》:两个文件共同的url(hash分治)频率最高《王道程序员求职宝典》:按频率排序多个文件中的query记录(hash分治)《王道程序员求职宝典》:找出文件中频率最高的100个词(Top Khash分治)《王道程序员求职宝典》:海量日志中提取访问百度次数最多的IP(Top Khash分治)中位数BAT面试经典题:10...原创 2019-08-26 08:01:50 · 186 阅读 · 0 评论 -
算法--树
目录遍历《剑指offer》面试题7:重建二叉树(前序中序)《剑指offer》面试题8:中序遍历的下一个节点(中序)《剑指offer》面试题26:树的子结构(前序)《剑指offer》面试题37:序列化二叉树(前序)Leetcode94:输出二叉树的中序遍历序列(中序递归迭代medium)Leetcode98:判断一棵二叉树是否是BST(BST中序medium)...原创 2019-08-20 15:22:52 · 498 阅读 · 0 评论 -
背包问题——MD,终于看会了
目录概述0-1背包问题使用递归方法解决动态规划解法自上而下记忆法自下而上填表法优化过程关于初始值总结完全背包问题递归法动态规划自上而下记忆法自下而上填表法多重背包问题递归法动态规划自上而下记忆法自下而上填表法一、概述01背包:有N件物品和一个容量为V的背包,第i件物品消耗的容量为Ci,价值为Wi,求解放入哪些物...转载 2019-08-23 22:07:39 · 1210 阅读 · 0 评论 -
红黑树
史上最清晰的红黑树讲解转载 2019-04-07 14:46:49 · 71 阅读 · 0 评论 -
数据结构——二叉树
二叉树的数据结构:class TreeNode{ int val; //左孩子 TreeNode left; //右孩子 TreeNode right;}二叉树的题目普遍可以用递归和迭代的方式来解1. 求二叉树的最大深度int maxDeath(TreeNode node){ if(node==null){ return ...原创 2019-04-02 09:24:38 · 247 阅读 · 0 评论 -
数据结构——深度优先搜索、广度优先搜索
树的深度优先搜索、广度优先搜索1.广度优先遍历广度优先遍历树,需要用到队列(Queue)来存储节点对象,队列的特点就是先进先出。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { ...原创 2019-04-02 14:48:23 · 1116 阅读 · 0 评论 -
数据结构——快速排序
快速排序也是一种分治的排序算法。快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序,会需要一个额外的数组;而快速排序的排序方式是当两个子数组都有序时,整个数组就自然有序了,快速排序可以不产生额外的数组。对于小数组(N<=20),快速排序不如插入排序。所以,小数组建议使用其他排序。快速排序可以由以下几步组成:1.如果数组S中的元素个数是...转载 2019-04-02 15:10:20 · 703 阅读 · 0 评论 -
算法(java)--十大经典排序
1. 冒泡排序主要思想:外层循环从1到n-1,内循环从当前外层的元素的下一个位置开始,依次和外层的元素比较,出现逆序就交换。特点:stable sort(稳定性排序)、In-place sort(不占用额外的空间,只是交换元素)最优复杂度:当输入数组就是排好序的时候,复杂度为O(n),而快速排序在这种情况下会产生O(n^2)的复杂度。最差复杂度:当输入数组为倒序时,复杂度为O(n^2)...原创 2019-04-09 09:21:51 · 132 阅读 · 0 评论 -
数据结构与算法——位图、布隆过滤器
一、位图BitMap位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。位图是通过将数组下标与应用中的一些值关联映射,数组中该下标所指定的位置上的元素可以用来标识应用中值的情况(是否存在或者数目 或者计数等),位图数组中每个元素在内存中占用1位,所以可以节省存储空间。位图是一种非常简洁快速...原创 2019-04-29 17:56:24 · 341 阅读 · 0 评论 -
算法--链表
目录一、遍历《剑指offer》面试题6:从尾到头打印链表(栈)Leetcode234:回文链表(栈easy)《剑指offer》面试题22:链表中倒数第k个节点(双指针)Leetcode19:删除链表倒数第n个节点(双指针鲁棒性medium)《剑指offer》面试题22(相关题):链表的中间节点(双指针)《剑指offer》面试题23:判断链表是否有环以及环的入口节点...原创 2019-08-19 22:23:37 · 144 阅读 · 0 评论 -
算法--字符串
目录字符串与数字《剑指offer》面试题20:判断字符串是否表示一个数值(鲁棒性)《剑指offer》面试题67:把字符串转换成整数(鲁棒性)字符查找《剑指offer》面试题50(题目一):字符串中第一个只出现一次的字符(哈希表)《剑指offer》面试题50(题目二):字符流中第一个只出现一次的字符(哈希表)翻转《剑指offer》面试题58(题目一):翻转单词顺序...原创 2019-08-14 22:17:01 · 1157 阅读 · 0 评论 -
刷题知识补充
StringBuffer与String的相互转换将StringBuffer转换成StringStringBuffer类成员toString函数可将其转换成String类型。StringBuffer buffer = newStringBuffer(“abcd”);String str = buffer.toString();通过String类中的构造将一个StringBuffer类转换...转载 2019-03-14 09:41:06 · 77 阅读 · 0 评论