![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
dpter
终有一日,繁花似锦。
展开
-
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表这个题目就是多了个数组返回,如果不是数组,本来是想直接把链表的元素放到list里面,然后reverse一下的。因为题目中要数组,所以连reverse这个操作都不需要了,在list转array的时候,倒着往数组写值就可以了。class Solution { public int[] reversePrint(ListNode head) { List<Integer> list = new ArrayList<&原创 2022-03-20 17:34:07 · 515 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格这个题目考的是StringBuilder,把不可变的字符串用可变的StringBuilder来重写。这里面还有个charAt()函数,也可以记一下。class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for(int i = 0;i<s.length();i++){原创 2022-03-20 17:32:46 · 157 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找拿到这个题目,如果直接暴力的话,的确是很简单的,直接来一次遍历就可以了,但这样的话,题目中给的行和列都是递增这个条件就浪费掉了,如果是一维数组,直接使用二分法应该就可以了。考虑到二分法的话,感觉对行和列来进行二分都不太好,根据题目,我可以得到一个结论,那就是右下角的元素是最大的。所以我在想,可不可以经过二分法,将我需要判断的元素精确定位到某行或列,然后对这一行和列进行查找,效率会高一些。这样写应该是可以做,但是好像还是很麻烦。进行了3次二分查找才找出来,对角原创 2022-03-20 17:30:50 · 368 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字找的是任意一个重复的数字,所以只找重复就可以了。首先我想到的是建一个数组,当输入2的时候,我就把下标为2 的位置填入1,最后遍历一遍,这样做甚至是可以把所有的数字出现次数打印出来。如果随便找一个,我不需要把这个流程走完,只需要在给数组赋值的时候,进行一次判断,如果为1,就可以直接返回了。class Solution { public int findRepeatNumber(int[] nums) { int len =原创 2022-03-20 17:20:35 · 290 阅读 · 0 评论 -
《剑指Offer》--JZ7 斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1。C++class Solution {public: int Fibonacci(int n) { if(n == 0) return 0; else if( n==1 || n == 2) return 1; else return Fibonacci(n-1) + Fibonacci(n-2); }};这样递归原创 2021-06-30 22:14:51 · 131 阅读 · 0 评论