剑指Offer刷题套路规律总结及LeetCode报错总结

时间/空间复杂度套路待总结:
总结经验排序和查找算法的复杂度情况,
总结各种常见情况(对于不同数据结构的插入删除)的复杂度情况:
1.在没有排序的数组中插入一个数字和找出中位数的时间复杂度分别是O(1)和O(n)
2.向保持排序的数组中插入新数据时间复杂度O(n),在已经排好序的数组中找到中位数时间复杂度O(1)
3.一个长度为n的字符串有O(n2)个子字符串,我们需要O(n)的时间判断一个子字符串中是否包含重复的字符,因此找出所有子字符串并判断每个子字符串中是否包含重复的字符的方法的总时间效率为O(n3)

剑指Offer刷题套路规律总结及LeetCode报错总结_第1张图片
剑指Offer刷题套路规律总结及LeetCode报错总结_第2张图片

1.当需要真正的改变实参时,则使用引用传递或地址传递
函数定义时如参数类型为二级指针,则调用函数时传入参数为&
函数定义时参数类型为引用&, 则调用函数时传入参数为本身(什么也不加)
如面试题37

2.需要改变指针的指向时,函数参数传入二级指针类型(貌似需要改变链表结构的时候,就需要传入二级指针类型.如当链表为空时,传入一些节点,最后头指针指向了第一个元素,而原来头指针指向空,改变了头指针的指向,因此传入了二级指针,如剑指Offer P57)

3.public与private:对于在线编程来说,除了题目给出的已知模板是public权限以外,中间需要用到的自定义辅助函数都可以设定为private权限

4.时间空间效率:
传递复杂类型参数:多用引用或指针,避免值传递方式(形参到实参会产生一次多余)复制操作

5.vector的size()函数返回类型为size_type,如需在循环中用到数组长度,则需前面int length = vector.size(),方可比较

6.在考虑时间/空间复杂度的同时,需注意面试官是否允许改变输入的数据(如数组).

7.使用下标运算符[]或迭代器:
所有标准库容器都可以使用迭代器,其中只有少数几种才同时支持下标运算符
[添加元素时不用迭代器]凡是使用了迭代器的循环体,都不要向迭代器所属容器添加元素

8.判断是奇数/偶数:
x & 1 == 0则为偶数,否则为奇数

9.最小int类型数可初始化为0x80000000 面试题42

10.字符串:
某小写字符-‘a’ :该字符在字母表中距离a的距离
某小写字符-‘a’+‘A’ :将该小写字符转换为大写字符

11.哈希表实现:
(1)简单功能的哈希表可以使用数组实现,数组[字符]   其中字符作为数组索引时自动转换为该字符对应的ASCII值
(2)使用STL中的map实现, 声明语法:   map map_name;

12.各种二叉树:(还有一些二叉树的特性和性质待总结.可参考黑马python数据结构课件)
斜树:左(右)斜树为所有的节点都只有左(右)子树的二叉树.
完全二叉树:对于一棵二叉树,深度为d.除了第d层外,其他各层节点数目均已达最大值,且第d层所有有节点从左向右连续紧密排列.
满二叉树:所有叶节点都在最底层的完全二叉树.
二叉排序树(二叉查找树/二叉搜索树):
定义:若存在左(右)子树,则左(右)子树上所有节点的值均小(大)于它的根节点的值.
构造目的(意义):不是为了排序,为了提高查找和插入删除关键字的速度.
平衡二叉树(AVL树):是一种二叉排序树,其中每个节点的左子树和右子树的高度差至多等于1.

13.多种方法:
一般问题都会存在着多种解法(应该一定有暴力法,但是时间或空间效率不高,回答时可以说出来,变现自己思维严谨)

在这里插入图片描述
15.缩写
DFS:Depth First Search深度优先搜索
BFS:Breadth First Search宽度优先搜索
DP:Dynamic Programming动态规划

16.声明容器位置:
当class中两个函数中都有涉及到的容器相关操作时,就将容器声明在class中,函数外;
当容器额应用范围仅在某个函数中时,则将容器声明在class内的函数中
(且要看容器的意义,如果需要记录历史记录,则必须声明在函数外,否则在函数内声明,每次都声明为新的,达不到记录的作用)

LeetCode报错总结

  1. AddressSanitizer: heap-use-after-free on address 0x602000000078 at pc 0x00000038d9c3 bp 0x7ffcb14db3c0 sp 0x7ffcb1(题目82删除链表中重复元素II)

原因:LeetCode使用了AddressSanitizer检查了是否存在内存非法访问(可能数组越界等边界情况未考虑)(本题中删除后未判断头结点情况,可能头结点被删除导致内存报错)

你可能感兴趣的:(Data_Structure,and,Algorithm)