随笔分类 - 数据结构与算法进阶
摘要:贪心算法介绍: 对问题求解时,总是做出在当前看来最好的选择 基本思路: 建立数学模型来描述问题 把求解的问题分成若干个子问题 对每一个子问题求解,得到子问题的局部最优解 把子问题的解局部最优解合成原来解问题的一个解 贪心策略适用的前提:局部足有策略能导致产生全局最优解。 贪心算法与动态规划算法的主要
阅读全文
摘要:动态规划: 一维动态规划: 目前我们所见到的DP问题都是1D的,让我们看一下其他例子: 问题描述1:给定n,找到不同的n写成1,3,4相加的方法 例如:n=5,答案是6 答案:公式:Dn = Dn-1 +Dn-3 +Dn-4 D[0] = D[1]=D[2] D[3]=2 for (i=4;i<=n
阅读全文
摘要:1. 哈希表(计算一个字符串或数组里的元素存不存在、唯不唯一、重复、计数、匹配) 数据成员(Data Member) 操作(Operations) 魔法盒:哈希函数进行操作 哈希(Hash): 数值K经过哈希函数hash_function生成哈希码hash_code会得到索引值Index 冲突(Co
阅读全文
摘要:堆栈: 数组实现堆栈的代码: 队列实现堆栈的代码: 队列: 循环数组实现一个队列代码: 用链表去实现队列: 练习1:用两个堆栈实现队列 练习2:用队列实现堆栈 练习3:最小栈 练习4:用一个数组堆两个栈 练习5:堆栈排序 练习6:字符串反转 练习7:回文字符串
阅读全文
摘要:链表:(链表应用:操作系统的缓存、Dictionary) 1. 链表由一系列数据记录构成,在每个记录里有个区域包含一个指向下一个数据记录的索引 2. 链表vs数组列表 (1)使用固定步数的操作可以在列表中任意节点做插入、删除操作 (2)不允许随机访问 3. 循环链表和双向链表 4. 哨兵节点 在某些
阅读全文
摘要:分治法: 1. 将问题拆分为几个子问题,并且这些子问题和原问题相似只是量级上小一些。 2. 递归地解决每一个子问题,然后结合这些子问题的解决方案构造出原问题的解决方案。 我们已经遇到过的问题: 1. 二分搜索 2. 归并排序 3. 快速排序 分治法例子: 练习1:快速指数: 能够快速计算出a的n次方
阅读全文

浙公网安备 33010602011771号