![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
niceHou666
这个作者很懒,什么都没留下…
展开
-
[剑指offer] 1、二维数组中的查找 java
第一种方法:暴力迭代public class Solution { public boolean Find(int target, int [][] array) { for(int i=0;i<array.length;i++){ for(int j=0;j<array[i].length;j++){ ...原创 2018-12-13 18:58:01 · 136 阅读 · 0 评论 -
[剑指offer] 栈的压入、弹出序列 java
import java.util.ArrayList;import java.util.Stack;public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) { Stack<Integer> stack=new Stack<Integer>(); ...原创 2019-01-31 13:53:45 · 120 阅读 · 0 评论 -
[剑指offer] 二叉树的镜像 java 迭代与递归
一、递归public class Solution { public void Mirror(TreeNode root) { if(root!=null){ TreeNode temp=root.left; root.left=root.right; root.right=temp; ...原创 2019-01-27 13:38:37 · 230 阅读 · 0 评论 -
[剑指offer] 从上往下打印二叉树 java
用队列实现。import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { Ar...原创 2019-02-01 15:53:18 · 202 阅读 · 0 评论 -
[剑指offer] 合并两个排序的链表 java
一、迭代public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null&&list2==null) return null; ListNode head=new ListNode(-1);//为了输出整个链表 ...原创 2019-01-23 11:50:43 · 169 阅读 · 0 评论 -
[剑指offer] 顺时针打印矩阵 java
public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> list=new ArrayList<Integer>(); int column=matrix[0].length; ...原创 2019-01-29 11:42:21 · 136 阅读 · 0 评论 -
[剑指offer] 二叉搜索树的后序遍历序列 java
public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length==0) return false; if(sequence.length==1) return true; return SequenceOfBST(...原创 2019-02-06 13:24:17 · 160 阅读 · 0 评论 -
[剑指offer] 删除链表中重复的节点 java
public class Solution { public ListNode deleteDuplication(ListNode pHead){ if(pHead==null||pHead.next==null) return pHead; ListNode head=new ListNode(0); head.next=pHead;...原创 2019-02-07 13:48:39 · 580 阅读 · 0 评论 -
[剑指offer] 包含min函数的栈 java
public class Solution { Stack<Integer> stack=new Stack<Integer>();//存放每次新来的元素 Stack<Integer> minStack=new Stack<Integer>();//存放当前最小值的栈 public void push(int node) {...原创 2019-01-30 16:49:27 · 186 阅读 · 0 评论 -
[剑指offer] 数组中出现次数超过一半的数字 java
一、hashmap:key放array[i],value放他出现的次数,大于数组长度的一半时,返回。import java.util.HashMap;public class Solution { public int MoreThanHalfNum_Solution(int [] array) { HashMap<Integer,Integer> m...原创 2019-02-27 17:01:55 · 176 阅读 · 0 评论 -
[剑指offer] 最小的k个数 java
一、堆排序public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> res=new ArrayList<Integer>(); if(k&g...原创 2019-02-25 10:25:39 · 193 阅读 · 0 评论 -
[剑指offer] 把数组排成最小的数 java
public String PrintMinNumber(int [] numbers) { String str="";//初始化str for(int i=0;i<numbers.length;i++){ for(int j=i+1;j<numbers.length;j++){ int a=I...原创 2019-02-26 10:34:46 · 253 阅读 · 0 评论 -
[剑指offer] 整数中1的出现次数 java
以下分析来自牛客网讨论区,分析的很清晰。---------------------------------------------------------------------------------------------------------------------------像类似这样的问题,我们可以通过归纳总结来获取相关的东西。首先可以先分类:我们知道在个位数上,1会每隔...原创 2019-03-03 14:42:31 · 200 阅读 · 0 评论 -
[剑指offer] 数组中的逆序对 java (归并排序)
public class Solution { int p; public int InversePairs(int [] array) { p=0; if(array!=null){ mergesort(array,0,array.length-1); } r...原创 2019-03-08 16:12:12 · 274 阅读 · 0 评论 -
[剑指offer] 树的子结构 java
用两个递归。第一个用来找A树中有没有和B根节点相同的节点,如果有,进入第二个递归,也就是让A、B树继续向下遍历做判断;如果没有,那就说明B不是A的子树。public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { //在A树中遍历 直到找到与B的根节点...原创 2019-01-26 15:35:37 · 160 阅读 · 0 评论 -
[剑指offer] 求1+2+3+...+n java
题目限制很多,最开始想的是等差数列求和,但是后来一想,不对。题目不让用乘除,那就能想到要用逻辑运算了。public class Solution { public int Sum_Solution(int n) { int sum=n; boolean temp=(n>0)&&((sum+=Sum_Solution(n-1))&...原创 2019-01-21 20:05:42 · 220 阅读 · 0 评论 -
[剑指offer] 2、替换空格 java
public class Solution { public String replaceSpace(StringBuffer str) { StringBuffer sb=new StringBuffer(); int i=0; while(i<str.length()){ if(str.charAt(i)=...原创 2018-12-13 20:26:22 · 130 阅读 · 0 评论 -
[剑指offer] 从尾到头打印链表(三种方法) java
一、每次把新遍历的链表值放到list索引为0的位置,实现逆序。public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list=new ArrayList<>()...原创 2018-12-19 09:31:28 · 215 阅读 · 0 评论 -
[剑指Offer] 旋转数组的最小数字 java 二分查找
第一种,有点皮import java.util.ArrayList;import java.util.Arrays;public class Solution { public int minNumberInRotateArray(int [] array) { Arrays.sort(array); return array[0]; }...原创 2019-01-04 15:40:52 · 158 阅读 · 0 评论 -
[剑指offer] 用两个栈实现队列 java
分析:队列先进先出,栈后进先出。两个栈可以用来调整顺序实现进出队列。在元素进队列时,首先看栈2还有没有元素。为什么会有栈2还有元素的情况?因为可能push调用了三次,比如1、2、3分别进队列而pop只调用了两次,比如1、2出来了。这样就剩了一个元素没出来,也就是3。下次再进元素时,一定要保证3先出去。所以进队列一定要把栈2的剩下的元素全都搞到栈1中来。在元素出队列就很简单了,把栈1的...原创 2019-01-04 16:27:38 · 220 阅读 · 0 评论 -
[剑指offer] 斐波那契数列 java 递归 和 迭代
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39递归public class Solution { public int Fibonacci(int n) { if(n==0) return 0; else if(n==1||n==2) return 1; ...原创 2019-01-04 16:55:30 · 291 阅读 · 0 评论 -
[剑指offer] 跳台阶 java
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。和leetcode70 爬楼梯一样的递归:public class Solution { public int JumpFloor(int target) { if(target<3) return target; els...原创 2019-01-04 20:20:22 · 396 阅读 · 0 评论 -
[剑指offer] 数值的整数次方
第一种:很简单但是效率低public class Solution { public double Power(double base, int exponent) { double result=1; int sign=0; if(exponent<0){ sign=-1; ex...原创 2019-01-11 15:40:32 · 216 阅读 · 0 评论 -
[剑指offer] 变态跳台阶 java
思路看一下右边链接中最高赞同的https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387public class Solution { public int JumpFloorII(int target) { if(target<3) return target; ...原创 2019-01-06 20:38:18 · 221 阅读 · 0 评论 -
[剑指offer] 矩形覆盖 java
还是斐波那契数列...为啥呢,还是看看右边链接里赞同最高的分析。https://www.nowcoder.com/questionTerminal/72a5a919508a4251859fb2cfb987a0e6public class Solution { public int RectCover(int target) { if(target<=2) ...原创 2019-01-08 14:08:08 · 284 阅读 · 0 评论 -
[剑指offer] 调整数组顺序使奇数位于偶数前面 java(三种方法)
第一种:又新建了两个数组,一个放奇数,一个放偶数public class Solution { public void reOrderArray(int [] array) { int[] array1=new int[array.length]; int[] array2=new int[array.length]; int len...原创 2019-01-14 19:22:27 · 590 阅读 · 0 评论 -
[剑指offer] 链表中倒数第k个节点 java
这个题leetcode也有。 思路:先定义两个指针p1,p2,让p2先走k步,然后p1,p2一起走,当p2走到最后,p1就在倒数第k个节点了。public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head==null) return null; ...原创 2019-01-15 10:33:32 · 445 阅读 · 0 评论 -
[剑指offer] 二进制中1的个数 java
第一个方法:以前不知道还有bitCount()方法,虽然不咋快,但是见了就整理进来吧public class Solution { public int NumberOf1(int n) { return Integer.bitCount(n); }} 第二个方法:优点,很好理解。缺点,有的循环可能是不必要的思路,每次将n较上一次右移一位,...原创 2019-01-09 19:10:08 · 332 阅读 · 0 评论 -
[剑指offer] 反转链表 java 两种方法
https://blog.csdn.net/FX677588/article/details/72357389上面这篇博客的图解很清晰,看不懂代码可以看这里 第一种方法:迭代head表示当前节点,pre是head的前一个节点,next是head的后一个节点。public class Solution { public ListNode ReverseList(ListNo...原创 2019-01-21 10:18:59 · 613 阅读 · 0 评论 -
[剑指offer] 和为S的两个数组 java
有序数组的查找一定要想一下二分查找能不能用,效率可以提升很多Q:怎么找到多个和相同情况下,乘积最小?A:和相同的情况下,两个数离的越远乘积越小public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList&l...原创 2019-04-25 21:10:11 · 178 阅读 · 0 评论