剑指offer习题第一章总结


习题一:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数


答:首先要考虑数组是否为空等边界问题

通过右上角的元素 可以排除一列或者只剩一列元素

如果右上角的数字等于要查找的数字则查找结束    

如果右上角数字大于这个个数则剔除右上角数字所在的列

如果右上角数字小于这个数则排除右上角数字所在的行


习题二:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解释:要实现这种方法 数组的总容量要大于等于改变后的数组容量

答:首先考虑字符串是否为空  数组容量是否大于等于改变容量

计算原数组实际字符串长度与空格数 则改变后数组的长度为 原数组长度+空格数*2;

定义二变量p1 p2分别指向原始数组尾部和新数组尾部  从尾向前依次拷贝 p1位置是“空格”时跳过“空格” p2位置一次传入后继续拷贝

知道p1大于等于p2


习题三:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。


思考过程:链表从头到尾遍历 从尾到头存入ArratList  相当于栈先入后出


答:遍历链表并将对应元素存入栈 将栈中元素一次输入ArrayList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值