YunWGui / Sword-To-Offer

《剑指 Offer · 第 2 版》C++ 实现,多种解法、新手友好型

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

《剑指 Offer · 第 2 版》 C++ 实现

  • 按不同类型分类
  • 每道题尽可能给出两种以上的不同解法
  • 提供算法模板
    • 六种排序(见 Sort 文件夹 )

Array

序号 题目
4 二维数组中的查找
21-1 调整数组顺序,使奇数位于偶数前面
29 顺时针打印矩阵
39 数组中出现次数超过一半的数字
45 把数组看排成最小的数
53-1 数字在排序数组中出现的次数
53-3 0~n-1中缺失的数字
53-3 数组中数组和下标相等的元素
57-1 和为S的数字
57-2 和为S的连续正数序列
61 扑克牌中的顺子
66 构建乘积数据

Mathematics

序号 题目
17 打印从1到最大的n位数
20 表示数值的字符串
43 1~n整数中1出现的次数
44 数字序列中某一位的数字
62 圆圈中最后剩下的数字
64 求1+2+~+n
65 不用加减乘除做加法
67 把字符串转换成整数

BackTracking & BFS & DFS

序号 题目
12 矩阵中的路径
13 机器人的运动范围
38 字符串的排列

Dynamic Programming

序号 题目
10-2 青蛙跳台阶问题
14 剪绳子
46 把数字翻译成字符串
47 礼物的最大价值
48 最长不含重复字符的子字符串
49 丑数
60 n个骰子的点数
63 股票的最大利润

Bit Operation

序号 题目
15 二进制中1的个数
56-1 数组中只出现一次的两个数字
56-2 数组中唯一只出现一次的数字

Sliding Window

序号 题目
42 连续子数组的最大和
59-1 滑动窗口的最大值

Binary Search

序号 题目
11 旋转数组的最小数字

Sort

序号 题目
51 数组中的逆序对

Recursive

序号 题目
10-1 求斐波拉契数列的第n项
16 数值的整数次方

Stack and Queue

序号 题目
9 用两个栈实现队列_acWing
9 用两个栈实现队列
30 包含min函数的栈
31 栈的压入、弹出序列
59-2 队列的最大值

Heap

序号 题目
40 最小的k个数
41 数据流的中位数

Linked List

序号 题目
6 从尾到头打印链表
18-1 删除链表的节点
18-2 删除链表中重复的节点
22 链表中倒数第k个节点
23 链表中环的入口节点
24 反转链表
25 合并两个排序的链表
35 复杂链表的复制
52 两个链表的第一个公共节点

Tree

序号 题目
7 重建二叉树
8 二叉树的下一个节点
26 树的子结构
27 二叉树的镜像
28 对称的二叉树
32-1 从上到下打印二叉树
32-2 分行从上到下打印二叉树
32-3 之字形打印二叉树
33 二叉搜索树的后序遍历序列
34 二叉树中和为某一值的路径
36 二叉搜索树与双向链表
37 序列化二叉树
54 二叉搜索树的第k大节点
55-1 二叉树的深度
55-2 平衡二叉树
68-1 二叉搜索树的最近公共祖先
68-2 二叉树的最近公共祖先

String

序号 题目
5 替换空格
19 正则表达式匹配
50-1 字符串中第一个只出现一次的字符
50-2 字符流中第一个只出现一次的字符
58-1 翻转单词顺序
58-2 左旋转字符串

About

《剑指 Offer · 第 2 版》C++ 实现,多种解法、新手友好型


Languages

Language:C++ 100.0%