![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
princesfang
书读百遍其义自见
展开
-
【剑指offer第一题】二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int target, int [][] array) { int row=0;...原创 2018-10-02 18:06:31 · 108 阅读 · 0 评论 -
【剑指offer第十题】矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?n=0,0种;n=1,1种;n=2,2种;n=3,3种;n=4,5种;n=5,8种;又是斐波那契数列 。public class Solution { public int RectCover(int target) ...原创 2018-10-05 20:26:18 · 107 阅读 · 0 评论 -
【剑指offer第十一题】二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。public class Solution { public int NumberOf1(int n) { return Integer.bitCount(n); }}bitCount(int i) 返回指定 int 值的二进制补码表示形式的 1 位的数量。...原创 2018-10-05 20:51:12 · 132 阅读 · 0 评论 -
【剑指offer第十二题】数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。public class Solution { public double Power(double base, int exponent) { double result=1; if(exponent==0) ...原创 2018-10-08 15:44:54 · 134 阅读 · 0 评论 -
【剑指offer第十三题】调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。第一种思路:如果遇到奇数,前面有偶数,就将所有偶数依次向后移动一位,然后将奇数放在最前面偶数原来的位置,同时偶数标志位向后移动一位。如果奇数前面没有偶数,什么都不做;如果遇到偶数,如果是第一次遇到偶数,将下标...原创 2018-10-08 17:02:35 · 120 阅读 · 0 评论 -
【剑指offer第十四题】链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。 /*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNod...原创 2018-10-08 21:32:47 · 108 阅读 · 0 评论 -
【剑指offer第十五题】反转链表
讲的很好,有两种方法https://www.jianshu.com/p/e385d9c06672/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution ...原创 2018-10-09 17:45:21 · 204 阅读 · 0 评论 -
【剑指offer第十六题】合并两个排序的列表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 /*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solu...原创 2018-10-09 18:43:46 · 133 阅读 · 0 评论 -
【剑指offer第十七题】树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) /**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this....原创 2018-10-09 20:48:55 · 147 阅读 · 0 评论 -
【剑指offer第九题】变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。f(0)=1;f(1)=1;f(n)=f(n-1)+f(n-2)+f(n-3)+……+f(2)+f(1)+f(0)=2f(n-1) public class Solution { public int JumpFloorII(int target)...原创 2018-10-05 19:52:55 · 117 阅读 · 0 评论 -
【剑指offer第八题】跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果) 第一级台阶1种,第二级台阶2种,第四级3种,第四级5种,第五级8种,每一级台阶跳法是前两级跳法的和符合斐波那契数列f(n)=f(n-1)+f(n-2)也可以理解青蛙有两种跳法,n-1级台阶跳一级和n-2台阶跳2级public class Solut...原创 2018-10-05 19:36:27 · 129 阅读 · 0 评论 -
【剑指offer第二十题】包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 import java.util.Stack;public class Solution { Stack<Integer> data=new Stack<Integer>(); Stack<Integer> min=n...原创 2018-10-12 15:10:35 · 113 阅读 · 0 评论 -
【剑指offer第二题】替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。public class Solution { public String replaceSpace(StringBuffer str) { String s1=str.toString();...原创 2018-10-02 18:38:21 · 94 阅读 · 0 评论 -
【剑指offer第三题】从尾到头打印链表
import java.util.ArrayList;public class Solution { ArrayList list=new ArrayList();//放在递归体外面,每次添加在同一个ArrayList public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ...原创 2018-10-02 19:34:07 · 126 阅读 · 0 评论 -
【剑指offer第四题】重建二叉树
//定义二叉树 class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }//重建二叉树public class Solution { public TreeNode reConstructBinaryT...原创 2018-10-02 21:29:07 · 138 阅读 · 0 评论 -
【剑指offer第五题】用两个栈实现队列
栈的实现是先进后出,队列是先进先出。思路就是第一个栈的元素按次序出栈,然后第二个栈依次入栈,然后出栈。import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = ...原创 2018-10-03 12:08:56 · 132 阅读 · 0 评论 -
【剑指offer第六题】旋转数组的最小数
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 题目的意思是输出数组的最小元素即可,数组的旋转并没有要求,通过遍历整个数组找到最小元素import ...原创 2018-10-03 15:46:35 · 108 阅读 · 0 评论 -
【剑指offer第七题】斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 刚开始觉得输入为一个数,然后找到这个数在斐波那契数列中的位置,使用了while方法,后来发现不如数组方便。不过数组会有一个界限,而while方法没有界限。public class Solution { public int Fibonacci...原创 2018-10-03 16:36:37 · 112 阅读 · 0 评论 -
【剑指offer第十八题】二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/pu...原创 2018-10-12 12:42:29 · 211 阅读 · 0 评论 -
【剑指offer第十九题】顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. import java.util.ArrayList;public class Solution { ...原创 2018-10-12 14:33:47 · 85 阅读 · 0 评论 -
【数组】Java实现找出数组中重复的数字
转载自https://blog.csdn.net/xzp_12345/article/details/78368916题目描述:找出数组中重复的数字在一个长度为n的数组里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出...转载 2018-10-09 23:18:26 · 5811 阅读 · 1 评论