数据结构和算法
ustbakerue
这个作者很懒,什么都没留下…
展开
-
《剑指offer》刷题笔记(3)
文章目录二叉树的深度判断是否是平衡二叉树数组中只出现一次数字和为S的两个数字和为S的连续正数序列翻转单词顺序序列左旋转字符串找到环形链表的环入口5张扑克牌是否是连续的约瑟夫环求1 + 2 + ... + n不用加减乘除做加法把字符串转换为数字数组中重复的数字把二叉树打印成多行字符串流中第一个不重复字符之字型打印二叉树股票的最大利润(数组中两数差最大值)数据流中的中位数二叉搜索树的第k个结点滑动窗...原创 2019-10-18 12:22:47 · 221 阅读 · 0 评论 -
最大公约数和最小公倍数问题
最大公约数和最小公倍数最大公约数最小公倍数最大公约数解决最大公约数问题一般使用辗转相除法(欧几里得算法)。欧几里得算法基于以下的定理:设a、b均为正整数,则gcd(a,b) = gcd(b,a % b)容易联想到递归:递归式: gcd(a,b) = gcd(b,a%b)递归边界: gcd(a, 0)= a由此可以写出下列的代码public class MaxCommonDi...原创 2019-03-08 15:44:13 · 553 阅读 · 0 评论 -
对数器
对数器用来判断两个算法的性能public static int[] generateRandomArray(int maxSize, int maxValue){ int[] arr = new int[(int)((maxSize + 1) * Math.random());]; for (int i =0; i < arr.length; i++) {...原创 2019-08-21 13:53:00 · 152 阅读 · 0 评论 -
《剑指offer》刷题笔记(1)
文章目录数组去重并返回第一个重复的数字(数组范围0~n-1)数组去重-改(不修改数组找出重复数字)二维数组中的查找替换空格从尾到头打印链表重建二叉树二叉树的下一个节点两个栈实现一个队列,实现pop()和push操作Fibonacci及其变形Fibonacci数列普通版青蛙跳台阶变态版青蛙跳台阶矩形覆盖旋转数组最小数字矩阵中的路径机器人运动轨迹剪绳子二进制中1的个数快速幂打印从1到最大的n位数链表节...原创 2019-08-28 11:40:59 · 206 阅读 · 0 评论 -
三大语言刷题tip
结构链表结构java链表模板链表的定义public class ListNode { int item; ListNode next; ListNode(int x){item = x;}}链表使用示例public class ListMain { public static void main(String[] args) { ...原创 2019-09-24 11:12:25 · 1152 阅读 · 0 评论 -
常用排序算法总结(未完成)
文章目录Summary时间复杂度空间复杂度初始情况稳定性排序原理直接插入排序和折半插入排序Bubble SortSelection SortInsertion SortShell SortMerge SortQuick SortSummary时间复杂度平均情况下:快排,希尔排序,归并排序,堆排都是nlogn,其余都是n^2;特殊情况是基数排序,复杂度是d(n+rd)(其中,n是关键字数,d...原创 2019-09-24 11:21:20 · 176 阅读 · 0 评论 -
算法思想总结
文章目录注意思想利用5位码点猜生日字符和整数加减关于每列输出a个数后换行的思考数独问题数独边界主定理(master theorem)二分查找middle的确定回溯法、动态规划、贪婪算法应用场景递归的时间和空间消耗return 语句和循环进行语句注意刷题时,不要使用异常捕获,会消耗额外空间,拉低运行速度。思想利用5位码点猜生日字符和整数加减ch - ‘A’ //不需要强制转...原创 2019-09-24 11:30:30 · 191 阅读 · 0 评论 -
《剑指offer》刷题笔记(2)
文章目录反转链表合并链表判断是否是子树镜像二叉树对称二叉树顺序打印矩阵min栈栈的压入,弹出序列从上往下打印二叉树二叉搜索树的后序遍历序列二叉树中和为某一值的路径复杂链表复制二叉搜索树与双向链表序列化二叉树全排列(有重复)数组中出现次数超过一半的数字找出最小的K个数最大子序列和把数组排成最小的数第index个丑数找出第一个只出现一次的字逆序对找到两个链表的公共节点数字在排序数组中出现的次数变体1:...原创 2019-10-07 16:52:18 · 273 阅读 · 0 评论