数据结构与算法
Zach_z
0.005
展开
-
重建二叉树
重建二叉树原创 2018-03-05 11:28:13 · 871 阅读 · 0 评论 -
ELFhash----字符串哈希算法
ELFHash 字符串哈希原创 2018-04-05 01:02:50 · 1496 阅读 · 2 评论 -
设计一个有getMin功能的栈
使用C++完成《程序员代码面试指南 IT名企算法与数据结构题目》 题目 实现一个特殊的栈,在实现栈的基本功能基础上,再实现返回栈中最小元素的操作 实现 使用两个栈,一个栈用来保存当前栈中的元素,起功能和一个正常的栈没有区别,这个栈记为stackData;另一个栈用于保存每一步的最小值,这个栈记为stackMin 1. 第一种方案 压入数据规则: 假设当前数据为newNum...原创 2018-07-30 13:36:34 · 636 阅读 · 0 评论 -
由两个栈组成一个队列
使用C++完成《程序员代码面试指南 IT名企算法与数据结构题目》 题目 编写一个类,用两个栈实现队列,支持队列操作: - push:入队 - pop:出队(不返回值) - front:返回最先入队的值 实现 栈的特点是先进后出,队列特点是先进先出 使用两个栈一个最为压入栈,一个作为弹出栈,压入栈只压入数据,弹出栈只弹出数据 数据按照1->2->3的顺序被压入进压入栈...原创 2018-07-30 20:25:52 · 958 阅读 · 1 评论 -
使用递归函数和栈逆序操作一个栈
使用C++完成《程序员代码面试指南 IT名企算法与数据结构题目》 题目 使用递归函数来实现对一个栈的逆序 比如一个栈依次压入1 2 3,则栈顶到栈底分别为3 2 1,将栈逆序后栈顶到栈底为 1 2 3 实现 两个递归函数解决问题 1. 将栈的栈底元素返回并移除 2. 逆序操作一个栈 具体代码 #include <stack> using namespace...原创 2018-07-31 00:15:19 · 921 阅读 · 0 评论 -
一个栈实现另一个栈的排序
使用C++完成《程序员代码面试指南 IT名企算法与数据结构题目》 题目 一个栈中元素的类型为整形,现在想将该栈按从大到小的顺序排序,只许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构 解决 排序栈为myStack,辅助栈为helpStack,整体思想是把myStack的数据放入helpStack中,并且在helpStack中栈顶到栈底按照从小到大排列 - 对mySt...原创 2018-07-31 00:45:37 · 1492 阅读 · 0 评论 -
递归解决汉诺塔问题+改变规则解决
一、汉诺塔问题 1.1 问题描述 三根柱子,其中一根柱子从上到下依次摆放着从小到大的圆盘: - 每次只能移动一个圆盘 - 并且大圆盘不能在小圆盘之上 - 需要把这个柱子上的圆盘全部移动到另一根柱子上 问题抽象为,把a柱子上的N个圆盘按照顺序摆放到柱子c上: 1.2 问题解决 可以吧解决步骤抽象成: 1. 将N-1个圆盘从a移动到b 2. 把第N个圆盘从a移动到c 3....原创 2018-07-31 20:01:34 · 1240 阅读 · 0 评论 -
快速排序
问题 将一个数组从小到大排序 解决 选择一个数字a(可以是要排序数组里任意数字,这里直接选择排序的中间数字),把小于a的数放在数组左边,把大于a的数组移到数组右边;再对左边和右边的两个子数组排序(即递归操作) 代码 static void Swap(int *a,int *b){ int p=0; p=*a; *a=*b; *b=p; } int ...原创 2018-08-12 23:54:55 · 887 阅读 · 0 评论 -
字符串中的第一个唯一字符
leetcode 的easy题: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事项:您可以假定该字符串只包含小写字母。 根据只包含小写字母(26个),记录三种状态(只用26 * 2bit表示即可): int first_uniq_char(char...原创 2019-04-22 09:54:05 · 696 阅读 · 0 评论