剑指offer
1. 二维数组中的查找
/* 方法一
* 暴力法
*/
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
if (array.size() == 0) return false;
int i, j = 0;
for (i = 0; i < array.size(); i++) {
for (j = 0; j <array[0].size(); j++)
if (array[i][j] == target) return true;
}
return false;
}
};
/* 方法二
* 二维有序数组的二分法
*/
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
int m = array.size();
if (!m) return false;
int n = array[0].size();
if (!n) return false;
int row = 0, col = n - 1;
while (row < m && col >= 0) {
if (array[row][col] == target) return true;
else if (array[row][col] < target) row++;
else if (array[row][col] > target) col--;
}
return false;
}
};2.替换空格
3. 从头到尾打印链表
4.重建二叉树
5.用两个栈实现队列
6.旋转数组的最小数字
7.斐波那契数列
8.跳台阶
9.变态跳台阶
10.矩形覆盖
11.二进制中1的个数
12.数值的整数次方
13.调整数组顺序使奇数位于偶数前面
14.链表中倒数第k个结点
15.反转链表
16.合并两个排序的链表
17.树的子结构
18.二叉树的镜像
19.顺时针打印矩阵
20.包含min函数的栈
21.栈的压入、弹出序列
22.从上往下打印二叉树
23.二叉搜索树的后序遍历序列
24.二叉树中和为某一值的路径
25.复杂链表的复制
26.二叉搜索树与双向链表
Last updated