
剑指offer
PartyPartyAnimal
这个作者很懒,什么都没留下…
展开
-
25. 复杂链表的复制
主程序包含三大步: (1)将链表的每个结点复制下来,并将依次连接在对应结点的后面,将其random域设为空;(2)拷贝random域:复制结点的random域是原始结点对应的random结点的下一个;(3)将链表拆分为两部分:遍历链表中的每个元素,将每个元素的指针指向下下个元素。(这里要定义返回的复制链表的头)/*struct RandomListNode { int label;原创 2018-03-27 21:15:35 · 361 阅读 · 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 · 216 阅读 · 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 · 214 阅读 · 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 · 283 阅读 · 0 评论 -
13 调整数组顺序使奇数位于偶数前面
需要记录排好序的最后一个奇数的位置odd_end 然后遇到奇数就一个一个向前交换,将该奇数交换到odd_end+1位置,更新odd_end=odd_end+1class Solution {public: void reOrderArray(vector<int> &array) { int array_len = array.size(); ...原创 2018-03-22 15:07:46 · 205 阅读 · 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 · 188 阅读 · 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 · 177 阅读 · 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 · 227 阅读 · 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 · 203 阅读 · 0 评论 -
3 从尾到头打印链表
1、题目输入一个链表,从尾到头打印链表每个节点的值。2、程序运用堆栈的数据结构,先进后出,即可实现链表的反向打印。栈顶用s.top(),删除栈顶元素s.pop()。/*** struct ListNode {* int val;* struct ListNode *next;* Li原创 2018-02-02 22:52:38 · 188 阅读 · 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 · 196 阅读 · 0 评论 -
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 · 243 阅读 · 0 评论