剑指offer刷题
Areil6
这个作者很懒,什么都没留下…
展开
-
hashmap转换
剑指offer40题 最小的k个数题目思路代码 题目 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 思路 解法1:大堆 解法2:快排 由于二叉搜索树的性质,左子树的值均小于根节点的值,右子树的值均大于根节点的值,因此只需判断给定的遍历数组里数值大小关系排列是否正确即可 代码 下面展示大小堆的方法 代码片. // An highlighted block public int[] getLeastNumbers(in原创 2020-06-19 18:03:54 · 321 阅读 · 0 评论 -
面试题39. 数组中出现次数超过一半的数字
剑指offer39题 数组中出现次数超过一半的数字题目思路代码 题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 思路 本题采用摩尔投票法效果最佳,即假设某个元素为众数,票数+1,如果后面的元素与这个元素值不相等,则相互抵消,票数-1,如果一定存在众数,则所有数的票数和一定大于0 代码 下面展示 代码片. // An highlighted block class Solution { public int majori原创 2020-06-12 16:05:50 · 131 阅读 · 0 评论 -
面试题38. 字符串的排列
剑指offer38题 字符串的排列题目思路代码 题目 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 思路 由于字符串排列数量有n!种,我们可以通过字符交换固定字符数组第一个元素(第一个元素可以为数组中的任意字符),然后固定数组第二个元素,然后依次固定其他元素,直到最后。 由于字符可能会重复,所以采用set去重 代码 下面展示 代码片. // An highlighted block class Solution { LinkedLis原创 2020-06-11 21:29:44 · 133 阅读 · 0 评论 -
剑指offer面试题34. 二叉树中和为某一值的路径
剑指offer面试题34. 二叉树中和为某一值的路径题目思路代码 题目 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。 思路 使用前序遍历,并使用两个链表存路径,一个链表存path,若递归到叶子节点,sum不等于0则表示该路径不符合题意,接下来向上回溯,回溯前要将此节点从path中移除,若sum==0,则将path存入另一个链表result中,最后返回result 代码 下面展示 代码片. // An highlighted原创 2020-06-09 17:00:38 · 236 阅读 · 0 评论 -
剑指 Offer 42题 连续子数组的最大和
剑指offer33题 二叉搜索树的后序遍历序列思路代码 思路 由于二叉搜索树的性质,左子树的值均小于根节点的值,右子树的值均大于根节点的值,因此只需判断给定的遍历数组里数值大小关系排列是否正确即可 代码 下面展示 代码片. // An highlighted block class Solution { public boolean verifyPostorder(int[] postorder) { return verify(0, postorder.length-1, pos原创 2020-06-09 16:13:43 · 204 阅读 · 0 评论