剑指offer
PartyPartyAnimal
这个作者很懒,什么都没留下…
展开
-
1 二维数组中的查找
1 思路 从右上角开始遍历,若小于target,则向下遍历;若大于target,则向左遍历。2 程序class Solution { public: bool Find(int target, vector<vector<int> > array) { int m = array.size(),n = array[0].size(); int i = 0原创 2017-12-26 20:58:28 · 210 阅读 · 0 评论 -
19. 顺时针打印矩阵
class Solution { public: vector<int> printMatrix(vector<vector<int> > matrix) { int row = matrix.size(); int col = matrix[0].size(); vector<int> res; // 首先判断矩阵是否合法原创 2018-03-26 18:09:10 · 179 阅读 · 0 评论 -
17. 树的子结构
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: bool原创 2018-03-26 18:04:33 · 187 阅读 · 0 评论 -
6 旋转数组的最小数字
class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { int len = rotateArray.size(); if(len == 0) return 0; int left = 0, right = len - 1; ...原创 2018-03-20 22:57:45 · 151 阅读 · 0 评论 -
5 用两个栈实现队列
class Solution { public: void push(int node) { stack1.push(node); } int pop() { if(stack2.empty()){ if(stack1.empty()) return 0; while(!sta...原创 2018-03-20 17:17:43 · 193 阅读 · 0 评论 -
4 重建二叉树
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Soluti...原创 2018-03-20 16:54:52 · 167 阅读 · 0 评论 -
15
首先判断链表是否为空(没写会出现段错误) 定义三个指针,cur指的是当前元素,pre指的是前一个元素,nextcur需要保存的是下一个元素,也就是下一次循环时的当前元素。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NU...原创 2018-03-22 19:48:14 · 252 阅读 · 0 评论 -
13 调整数组顺序使奇数位于偶数前面
需要记录排好序的最后一个奇数的位置odd_end 然后遇到奇数就一个一个向前交换,将该奇数交换到odd_end+1位置,更新odd_end=odd_end+1 class Solution { public: void reOrderArray(vector<int> &array) { int array_len = array.size(); ...原创 2018-03-22 15:07:46 · 170 阅读 · 0 评论 -
14 链表中倒数第k个结点
定义两个指针start和end,让start先走k步(在走的过程中,需要判断start是否指向NULL,指向的话说明链表长度小于k,直接返回NULL),然后再判断当前start是否指向NULL,指向的话说明量表长度等于k,直接返回end,否则令它们同时往后移动,当start到达链表末尾时,end所指即为链表中倒数第k个结点。 /* struct ListNode { int val; ...原创 2018-03-22 15:03:47 · 156 阅读 · 0 评论 -
2 替换空格
1、题目 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 2、程序1 确定变换后数组的长度,再从后往前更新数组,记得在最开始要先加’\0’ class Solution { public: void replaceSpace(char *str,int length) {原创 2017-12-26 23:01:47 · 170 阅读 · 0 评论 -
3 从尾到头打印链表
1、题目 输入一个链表,从尾到头打印链表每个节点的值。 2、程序 运用堆栈的数据结构,先进后出,即可实现链表的反向打印。 栈顶用s.top(),删除栈顶元素s.pop()。 /** * struct ListNode { * int val; * struct ListNode *next; * Li原创 2018-02-02 22:52:38 · 156 阅读 · 0 评论 -
25. 复杂链表的复制
主程序包含三大步: (1)将链表的每个结点复制下来,并将依次连接在对应结点的后面,将其random域设为空;(2)拷贝random域:复制结点的random域是原始结点对应的random结点的下一个;(3)将链表拆分为两部分:遍历链表中的每个元素,将每个元素的指针指向下下个元素。(这里要定义返回的复制链表的头)/* struct RandomListNode { int label;原创 2018-03-27 21:15:35 · 324 阅读 · 0 评论