剑指offer
十四说四十、
一只努力搬砖的985小硕
展开
-
【剑指offer】之【 知识迁移能力】
38. 数字在排序数组中出现的次数 题目描述 统计一个数字在排序数组中出现的次数。 解法一: 用哈希表来做 public int GetNumberOfK(int [] array , int k) { if(array == null){ return 0; } HashMap<Integer, Integer>...原创 2020-04-21 12:24:53 · 145 阅读 · 0 评论 -
【剑指offer】之【 时间空间效率的平衡】
34. 丑数 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 解法一: 维护三个队列,选择三个队列头最小的数加入丑数数组,同时将该最小的数乘以2,3,5放入三个队列; public int GetUglyNumber_Solution(int inde...原创 2020-04-20 11:07:49 · 93 阅读 · 0 评论 -
【剑指offer】之【时间效率】
目录29. 数组中出现次数超过一半的数字解法一:30. 最小的K个数解法一:31. 连续子数组的最大和解法一:解法二:32. 从1到n整数中1出现的次数解法一:解法二:33. 把数组排成最小的数解法一: 29. 数组中出现次数超过一半的数字 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出...原创 2020-04-19 14:38:23 · 119 阅读 · 0 评论 -
【剑指offer】之【 举例让抽象具体化】
目录包含min函数的栈解法一:双栈法栈的压入、弹出序列解法一:使用辅助栈从上往下打印二叉树解法一:二叉搜索树的后序遍历序列解法一:二叉树中和为某一值的路径解法一: 包含min函数的栈 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 解法一:双栈...原创 2020-04-06 23:17:17 · 77 阅读 · 0 评论 -
【剑指offer】之【 画图让抽象形象化】
顺时针打印矩阵 解法一: 画图 每次打印一圈,然后找好边界 public class Solution { ArrayList<Integer> res = new ArrayList(); public ArrayList<Integer> printMatrix(int [][] matrix) { if(matrix == null...原创 2020-04-05 10:53:22 · 96 阅读 · 1 评论 -
【剑指offer】之【 面试思路】
二叉树的镜像 解法一:递归 public class Solution { public void Mirror(TreeNode root) { if(root == null ||(root.left == null && root.right == null)){ return; } TreeNo...原创 2020-04-05 09:47:59 · 64 阅读 · 0 评论 -
【剑指offer】之【 代码的鲁棒性】
目录链表中倒数第k个结点解法一:ArrayList解法二:双指针反转链表解法一:迭代。三个指针 链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点。 解法一:ArrayList 用一个ArrayList 存储遍历的Node节点 然后可以直接返回你想要的节点了。。 public class Solution { public ListNode FindKthToTa...原创 2020-04-04 23:07:13 · 99 阅读 · 0 评论 -
【剑指offer】之【 代码的完整性】
数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 解法一: 调用Math.pow()函数 估计面试管不让这么写吧— public class Solution { public double Power(double base, int exponent) ...原创 2020-04-04 20:52:41 · 99 阅读 · 0 评论 -
【剑指offer】之【位运算】
二进制中1的个数 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解法一: 利用自己&自己减一 可以消除一个1 计算到0的次数就是题意要求的 public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0){ ...原创 2020-04-04 01:30:49 · 61 阅读 · 0 评论 -
【剑指offer】之【递归和循环】
文章目录斐波那契数列解法一:解法二:跳台阶解法一:变态跳台阶解法一:矩形覆盖解法一: 斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 解法一: 递归版本 public class Solution { public int Fibonacci(int n) { if(n &...原创 2020-04-04 01:11:27 · 86 阅读 · 0 评论 -
【剑指offer】之【查找和排序】
8. 旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解法一: 暴力遍历O(N) public class Solution { ...原创 2020-04-03 17:42:33 · 76 阅读 · 0 评论 -
【剑指offer】之【栈与队列】
栈与队列用两个栈实现队列解法一:滑动窗口的最大值解法一: 用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解法一: stack1 是入队的 stack2 是出队的,每次出队完后要保持stack1 的有序性 所以要把stack2的数据放回stack1 public class Solution { Stack<Int...原创 2020-04-03 00:41:43 · 77 阅读 · 0 评论 -
【剑指offer】之【树】
树重建二叉树解法一: 重建二叉树 解法一: 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 /** * Definition for binary tree * public class Tree...原创 2020-03-31 18:28:52 · 102 阅读 · 0 评论 -
【剑指offer】之【数组】
数组3. 二维数组中的查找解法一:暴力法解法二:从后遍历数组中重复的数字 3. 二维数组中的查找 题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法一:暴力法 首先是暴力破解法 运行时间:172 ms 占用内存:18432K publ...原创 2020-03-08 18:05:57 · 71 阅读 · 0 评论 -
【剑指offer】之【链表】
1.从尾到头打印链表 思路:利用栈的先入后出的特性,先入栈再出栈。 import java.util.*; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = n...原创 2019-11-20 14:13:55 · 76 阅读 · 0 评论