剑指Offer-数据结构与算法题目(Java实现)

1、栈与队列

【剑指Offer-5】两个栈实现队列
【剑指Offer-20】包含min函数的栈
【剑指Offer-21】栈的压入、弹出序列
【剑指Offer-64】滑动窗口的最大值
【实现一个栈】
【实现一个队列】
【包含min/max函数的栈】
【两个队列实现一个栈】


2、链表

【剑指Offer-3】从尾到头打印链表
【剑指Offer-14】链表中倒数k个结点&中间结点
【剑指Offer-15】反转链表
【剑指Offer-16】合并两个排序的链表
【剑指Offer-25】复杂链表的复制
【剑指Offer-36】两个链表的第一个公共节点】
【剑指Offer-55】链表中环的入口结点
【剑指Offer-56】删除链表中重复的结点
【按k步反转链表】
【单链表冒泡排序】
【单链表快速排序】
【双向链表快速排序】
【o(1)删除链表节点】


3、数组

【剑指Offer-1】二维数组中的查找
【剑指Offer-6】旋转数组的最小数字
【剑指Offer-13】调整数组顺序使奇数位于偶数前面
【剑指Offer-19】顺时针打印矩阵
【剑指Offer-28】数组中出现次数超过一半的数字
【剑指Offer-29】最小的K个数
【剑指Offer-30】连续子数组的最大和
【剑指Offer-32】把数组排成最小的数
【剑指Offer-35】数组中的逆序对
【剑指Offer-37】数字在排序数组中出现的次数
【剑指Offer-40】数组中只出现一次的数字
【剑指Offer-41】和为S的连续正数序列
【剑指Offer-42】和为S的两个数字
【剑指Offer-45】扑克牌顺子
【剑指Offer-46】孩子们的游戏(圆圈中最后剩下的数/约瑟夫环)
【剑指Offer-47】求1+2+3+…+n
【剑指Offer-50】数组中重复的数字
【剑指Offer-51】构建乘积数组
【剑指Offer-63】数据流中的中位数
【冒泡、快排、归并排序】
【无序数组的中位数(快排、最小堆)】
【取最大的k个数(topK)(最小堆)】


4、字符串

【剑指Offer-2】替换空格
【剑指Offer-27】字符串的排列
【剑指Offer-34】第一个只出现一次的字符
【剑指Offer-43】左旋转字符串
【剑指Offer-44】翻转单词顺序列
【剑指Offer-49】把字符串转换成整数
【剑指Offer-52】正则表达式匹配
【剑指Offer-53】表示数值的字符串
【剑指Offer-54】字符流中第一个不重复的字符
【反转字符串或句子】
【最小覆盖子串】


5、树

【剑指Offer-4】重建二叉树
【剑指Offer-17】树的子结构
【剑指Offer-18】二叉树的镜像
【剑指Offer-22】从上往下打印二叉树
【剑指Offer-23】二叉搜索树的后序遍历序列
【剑指Offer-24】二叉树中和为某一值的路径
【剑指Offer-26】二叉搜索树与双向链表
【剑指Offer-38/39】二叉树深度、平衡二叉树
【剑指Offer-57】二叉树的下一个结点
【剑指Offer-58】对称的二叉树
【剑指Offer-59】按之字形顺序打印二叉树
【剑指Offer-60】把二叉树打印成多行
【剑指Offer-61】序列化二叉树
【剑指Offer-62】二叉搜索树的第k个结点
【先、中、后序遍历二叉树(递归、非递归)】


6、位运算

【剑指Offer-11】二进制中1的个数
【剑指Offer-12】数值的整数次方
【剑指Offer-48】不用加减乘除做加法


7、回溯算法

【剑指Offer-65】矩阵中的路径
【剑指Offer-66】机器人的运动范围


8、其他

【剑指Offer-7/8】斐波那契数列、跳台阶、兔子数量问题(递归、非递归)
【剑指Offer-9】变态跳台阶
【剑指Offer-10】矩阵覆盖
【剑指Offer-31】整数中1出现的次数
【剑指Offer-33】丑数
【两个大整数相加】
【概率问题 p 1-p】
【水仙花数】
【折半查找】
【Java构建LRUCache&MaxHeap】


时间&空间复杂度分析方法

参考:时间复杂度&空间复杂度分析

 
 
 
 

题目来源

牛客网-剑指Offer

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值