
剑指Offer
零分分分分
00
展开
-
剑指offer 判断数组是否为二叉搜索树的后序遍历
思路:观察二叉搜索树的后序遍历,会发现**根节点位于数组的最后**,并且以根节点为分界,**会出现数组左边的数字比根节点小,右边比它大;**因此只需判断出每一个子数组是否呈现这种规律,若是都满足,则为二叉搜索树。否则不是。还有一种特殊情况,就是数字呈现一边倒,如序列1,2,3,4,5 仍为二叉搜索树另外数组小于三的任意组合,都满足二叉搜索树另外注意找分界点的代码写法,用两个for循环,...原创 2020-02-28 14:42:37 · 182 阅读 · 0 评论 -
剑指offer 二叉树的层序遍历
二叉树的层序遍历 利用队列来做import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;...原创 2020-02-28 13:04:02 · 162 阅读 · 0 评论 -
剑指offer 栈的压入和弹出序列
思路就是:将数组A[i]依次压入栈,若栈顶元素和b[j]相等,将栈顶元素出栈j++,这里用一个while循环判断,若不相等,则继续入栈,直到A为空,判断栈是否为空。import java.util.ArrayList;import java.util.Stack;public class Solution { public boolean IsPopOrder(int []...原创 2020-02-28 11:35:59 · 134 阅读 · 0 评论 -
牛客网 求水平值总和最大值
牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2为了让比赛更有看...原创 2020-02-27 21:02:17 · 412 阅读 · 0 评论 -
剑指offer 顺时针打印矩阵
这道题难在这个while里面的if判断,这里很精秒import java.util.ArrayList;import java.util.List;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer>...原创 2020-02-26 21:32:49 · 106 阅读 · 0 评论 -
剑指offer 树的子结构
/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { publi...原创 2020-02-26 19:58:51 · 96 阅读 · 0 评论 -
剑指offer 反转链表
/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { ...原创 2020-02-26 15:43:45 · 115 阅读 · 0 评论 -
剑指offer 链表中倒数第k个节点
还可以用快慢指针去做,这里是先求出链表长度,再找出节点/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Fi...原创 2020-02-26 14:52:41 · 98 阅读 · 0 评论 -
剑指offer 调整奇数顺序使奇数位于偶数前面
思路是遍历原数组,碰到偶数,就将偶数个数len++,然后将偶数放入新数组,碰到奇数,就将这个奇数在原数组中向前移动len位,遍历完后,前半部分已经都是奇数,然后将新数组中的偶数依次放到原数组中奇数后面即可。public class Solution { public void reOrderArray(int [] array) { int[] array2=new in...原创 2020-02-26 14:02:56 · 167 阅读 · 0 评论 -
剑指offer 数值的整数次方
注意指数可以为0和负数import java.lang.Math;public class Solution { public double Power(double base, int exponent) { if(exponent==0) return 1; double result=base; int e...原创 2020-02-26 13:35:56 · 137 阅读 · 0 评论 -
剑指offer 矩形覆盖(同斐波那契数列解法)
public class Solution { public int RectCover(int target) { if(target<=2) return target; int pre=1,next=2,result=0; for(int i=3;i<=target;i++){ ...原创 2020-02-26 12:41:55 · 120 阅读 · 0 评论 -
剑指offer 变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。f(n)=f(n-1)+f(n-2)+...+f(1)+1;因此f(n+1)=f(n)+f(n)=2f(n)public class Solution { public int JumpFloorII(int target) { if(target==0...原创 2020-02-26 11:44:49 · 111 阅读 · 0 评论 -
剑指offer 两个栈实现队列
import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(i...原创 2020-02-25 20:13:10 · 110 阅读 · 0 评论 -
剑指Offer 重建二叉树
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.Arrays;public c...原创 2020-02-25 19:55:24 · 95 阅读 · 0 评论 -
剑指offer 从尾到头打印链表
/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;import ...原创 2020-02-25 11:52:55 · 91 阅读 · 0 评论 -
剑指offer 替换空格
public class Solution { public String replaceSpace(StringBuffer str) { StringBuffer result=new StringBuffer(); for(int i=0;i<str.length();i++){ char c=str.charAt(i); ...原创 2020-02-25 11:27:01 · 90 阅读 · 0 评论 -
剑指offer 二维数组的查找
思路:从左下或右上开始,这里是右上public class Solution { public boolean Find(int target, int [][] array) { if(array==null) return false; int i=0,j=array[0].length-1; while(i&l...原创 2020-02-25 11:13:26 · 86 阅读 · 0 评论