
剑指offer题解笔记
剑指offer题解笔记
lk小强
水滴穿石,一步一个脚印成长为大神
展开
-
剑指Offer面试题:5.从尾到头打印链表
一、题目 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 二、思路 1.使用头插法 使用头插法可以得到一个逆序的链表。 头结点和第一个节点的区别: 头结点是在头插法中使用的一个额外节点,这个节点不存储值; 第一个节点就是链表的第一个真正存储值的节点。 2.递归 要逆序打印链表 1->2->3(3,2,1),可以先逆序打印链表 2->3(3,2),最后再打印第一个节...原创 2019-11-08 16:05:59 · 473 阅读 · 0 评论 -
剑指Offer面试题:4.替换空格
一、题目 请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。 二、思路 在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。因为一个空格要替换成三个字符(%20),因此当遍历到一个空格时,需要在尾部填充两个任意字符。 令 P1 指向字符串原来的末尾位置,P2 指向字符串现在的末尾位置。P1 和 P2...原创 2019-10-29 09:37:02 · 485 阅读 · 0 评论 -
剑指Offer面试题:3.不修改数组找出重复的数字
一、题目 在一个长度为n+1的数组里面的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为9的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3。 二、思路 方法一 创建一个新n+1的数组data,遍历原来的数组如 2 将2存到 data[2]中, 3存到data[3]中…. 等下下次一遍...原创 2019-10-28 11:12:53 · 620 阅读 · 0 评论 -
剑指Offer面试题:1.找出数组中重复的数字
一、题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3。 二、思路 三、解决问题 3.1 代码实现 /** * 找到数组中一个重复的数字 * 返回-1代...原创 2019-10-24 10:44:12 · 519 阅读 · 0 评论 -
剑指Offer面试题:2.二维数组中的查找
一、题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。 二、解题思路 首先选取数组中右上角的数字。如果...原创 2019-10-17 09:30:25 · 312 阅读 · 0 评论