剑指offer算法思想
Posted lpd1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer算法思想相关的知识,希望对你有一定的参考价值。
3. 数组中重复的数字
算法步骤:遍历该数组nums,从第一个数字开始,判断
1)如果nums[i]和下标的值i一样,就跳到下一个数字
2)如果不一样,那么就判断,nums[i]是否等于nums[nums[i]],如果等于,输出该数字nums[下标值],
如果不等于,那么就调整nums[i]和nums[nums[i]]的顺序。继续重复1)和2)
4. 二维数组中的查找
算法步骤:
1)获取行数rows和列数cols
2)确定从第一行r和最后一列c开始,即从右上角开始
3)while循环,行数r<=rows-1&&c>=0
4)如果target等于matric[r][c],直接输出答案。如果target大于matric[r][c],行r增加,如果target小于matric[r][c],列减少,c--。
5. 替换空格
算法步骤:
1)得到原长度下标p1
2)然后遍历字符串里面的空格,如果是有空格,那么在这个字符串后面加多两个空格,最终是为了得到替代之后的字符长度数量下标p2
3)while(p1>=0&&p2>p1),获取p1下标的值c,并且从右往左遍历完,如果c为空格,那么就往该字符串的P2 指向的位置依次填充 02%,如果不是空格,就直接添加c
6. 从尾到头打印链表
算法思路:
1)往栈加数据
2)设置一个集合Arraylist
3)出栈,并且把数据加到该集合中
9. 用两个栈实现队列
算法思路:
1)设立两个栈,一个负责传入in,一个负责出栈out
2)入栈方法,就是使用in添加数据
3)出栈方法:
①如果out为空,那么我们就要判断in是否为空,如果不为空,那么我们就取出in的数据,传入out栈
②如果经过上述处理,out还为空,那么就输出queue为空
③return out.pop()
以上是关于剑指offer算法思想的主要内容,如果未能解决你的问题,请参考以下文章