Please enable JavaScript.
Coggle requires JavaScript to display documents.
剑指offer (数组 (一维数组 (一般解题方法 (先排序,后去重, 利用hash表进行去重, 利用特殊场景下,数组下标等于数组本身的值的情况),…
剑指offer
数组
一维数组
一般解题方法
先排序,后去重
利用hash表进行去重
利用特殊场景下,数组下标等于数组本身的值的情况
特点: 连续的数字的组合
二维数组
特点:二维数组通常都会以一种规律,从上到下,从左到右进行,那么我们在审题的时候需要注意这一点
解题方法
对于一些复杂的情况,可以用特例去考虑,比如一种情况不太好分析,可以尝试着用其中一种情况去试,这样子可以很好的得到情况。
链表
链表的数据结构,自身携带的数据和指向的指针
如何从尾到头打印指针
联想,链表的遍历顺序是从头到尾,而打印的顺序是从尾到头,如果需要从尾到头进行打印,那么这个顺序明显就是后进先出,那么我们需要对其进行链表转栈的操作,而递归的实质就是栈所以可以联想到就是递归来实现。
字符串
替换空字符串
暴力解法
从前往后替换,这样子的替换由于每次都需要往后去移动,时间复杂度非常高o(n的平方)
计算需要移动的格数,再从后往前移动
计算好字符串中的空格数量,然后从后向前移动的时候,将字符串进行相应的后移特定的字符。
举一反三,当我们从前往后去合并数组或是字符串的时候发现会移动大量的数据,这是不利的,我们应该试着从后往前,提前计算好相应的数组的长度,这样可以有效的实现一定的替换。
树
二叉树
前序遍历
中序遍历
后序遍历
这三类的语言结构都对遍历有要求,比如说递归与循环,这几种都要注意学习