《剑指offer》学习(一)

面试的基础知识

Posted by Haiming on May 17, 2020

《剑指offer》作为被很多前辈提及过的好书,自然有其精妙之处。

那就学起来吧!

1. 数据结构

大部分面试题围绕的数据结构有:

  1. 数组,字符串:都是连续空间,一个存储数字(狭义上而言),一个存储字符。
  2. 链表和树:出现的频率比较高,虽然在Java之中,没有显式的指针操作,但是实际上对于对象的操作都是直接操作指针的。
  3. 栈和队列:栈是先入后出,所以其和递归紧密相关——由于最后进入栈的往往是递归最内层的,那么这样才能够从递归最内层开始往外吐。队列是先入先出,所以其和BFS紧密相关——都是一层一层的去往队列之中填,填了一层之后先处理,之后再填一层,那么其和BFS相关也就顺理成章了。

1.1 数组

leetcode和牛客网上都有剑指offer的专题,可以直接刷。下面以leetcode为主:https://leetcode-cn.com/problemset/lcof/

面试题3 数组中重复的数字

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。