剑指offer
SpecYue
学习自记录
展开
-
面经里出现的算法题
最大自序和最长无重复子串LRU,双链表+哈希表二叉树转双向链表快排原创 2020-03-17 21:36:04 · 356 阅读 · 0 评论 -
基础知识总结
文章目录操作系统僵尸进程和孤儿进程死锁linux inode数据库索引redis计算机网络http和https输入一个url后发生了什么七层网络协议和四层网络协议UDP与TCP区别tcp数据结构与算法平衡树数组和链表的区别杂项RPCRESTful操作系统僵尸进程和孤儿进程死锁互斥,不可剥夺,循环等待,对于资源的请求保持linux inode中文译名,索引节点,存储文件元信息的区域。i...原创 2020-03-15 21:20:23 · 141 阅读 · 0 评论 -
剑指offer14--树的镜像
方法交换左右子树一直到空节点为止/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void Mir...原创 2020-03-17 09:50:46 · 137 阅读 · 0 评论 -
剑指offer13--树的子结构
判断树B是否是A的子树方法注意的点:如果是比较两个小数是否相等,不能直接用==号,因为计算机中float和double都是有误差的如果两个小数小于0.0000001则认为相等bool Equel(double num1,double num2){ if((num1 - num2 >-0.0000001)&&(num1 - num2 < 0.0000...原创 2020-03-17 09:28:13 · 135 阅读 · 0 评论 -
剑指offer12--合并链表
两个有序链表合并方法讲真的,我真是一个傻吊,这题写过一次了,还是调试半天,曹/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNo...原创 2020-03-16 20:19:33 · 138 阅读 · 0 评论 -
剑指offer11--链表翻转
题目如字面意思方法1其实不论是先将链表放到栈还是数组中都是可以的,但是空间复杂度高方法2用头插法/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ...原创 2020-03-16 19:22:49 · 119 阅读 · 0 评论 -
剑指offer10---调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。难点在相对位置不变这里.方法1根据相对位置不变这个特性可以看出一点稳定排序算法的意思,那么就利用插入排序的思想.class Solution {public: void reOrderArray(vector&...原创 2020-03-16 18:19:15 · 144 阅读 · 0 评论 -
剑指offer09--实现指数运算
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0方法要考虑到指数是负数的时候怎么办,底数是0的时候怎么办?一般:指数是负数的时候,直接算指数整数的答案,然后1/result.底数是0时候,因为数学上不存在,所以要与面试官约定一下这种情况等于0,然后设置一个全局的bool值告诉调用者,是...原创 2020-03-16 15:08:52 · 162 阅读 · 0 评论 -
剑指offer08--二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。方法1先判断最右边一位是不是1,在将二进制往右边移动一位,如此循环int numberOF(int n){ int count = 0; while(n){ if(n & 1){ count++; n = n>>1;}但是会越到一个问题,如果函数输入是一个负数,比如0X80000000,...原创 2020-03-16 14:20:17 · 154 阅读 · 1 评论 -
剑指offer07--旋转数组
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。方法1题目看起来很简单,如果直接用 两个for循环可以直接搞定,但是绝对不是面试官想要的.方法2二分法,二分法...原创 2020-03-16 13:54:58 · 145 阅读 · 0 评论 -
剑指offer06--矩形覆盖
方法对于这种题目我向来是没有任何思路的,但是按照tag来刷题之后,我就大概摸到了窍门,和fibonacci数列一样是找规律的题目,用递归求解.我搬照牛客网上的一个解答.和跳台阶类似,小矩形横着放相当于跳两级台阶,小矩形竖着放相当于跳一级太极.f(1) = 1;f(2) = 2;f(3) = 3;…f(n) = f(n - 1)+f(n - 2);代码不贴了,看跳台阶代码;...原创 2020-03-16 12:56:19 · 138 阅读 · 0 评论 -
剑指offer05--台阶有多少中跳法
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。方法其实就是fibonacci数列,不同的是,fibonacci数列n=1与n=2时都输出1,但是这题n=1时输出1,n=2时输出2class Solution {public: int jumpFloor(int number) { if(nu...原创 2020-03-16 12:27:10 · 103 阅读 · 0 评论 -
剑指offer04--栈和队列
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。方法push的时候就是直接push,pop就需要先将一个stack1全部出栈到stack2,然后将stack2出栈一个class Solution{public: void push(int node) { stack1.push(node); } int p...原创 2020-03-16 12:25:01 · 120 阅读 · 0 评论 -
剑指offer3
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。方法1先顺序存入vector,再反向读取vector.back()/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(N...原创 2020-03-16 09:43:29 · 217 阅读 · 0 评论 -
剑指offer02
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。方法1先分割字符串,再拼接字符串function replaceSpace(str){ // write code here let a = str.split(' ') let result = '' ...原创 2020-03-16 09:19:41 · 212 阅读 · 0 评论 -
剑指offer01
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法1暴力法,双层循环class Solution {public: bool Find(int target, vector<vector<int> > arra...原创 2020-03-16 09:07:36 · 114 阅读 · 0 评论