研发高频算法题

牛客研发最爱考、剑指offer经典题目

题解

Leetcode-剑指offer 40.最小的K个数

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2: 输入:arr = [0,1,2,1], k = 1输出:[0]   限制: 0 <= k <= arr.length <= 10000...
题解

富途笔试-找到搜索二叉树中两个错误的节点

题目描述一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请按升序输出这两个错误节点的值。(每个节点的值各不相同)示例1输入{1,2,3}返回值[1,2] 思路中序遍历可以得到搜索二叉树的升序遍历结果,题目描述其中两个节点交换了位置,因此只需在中序遍历中找到异常数据即可。 中序遍历二叉树 从前面往后找,发现当前数比后一个数大,则是异常数据,放在结...
题解

Map集合的统计每个字符出现次数的两种方法

Map集合的统计每个字符出现次数的两种方法一、map.containsKey()方法Map可以出现在k与v的映射中,v为null的情况。Map集合允许值对象为null,并且没有个数限制,所以当get()方法的返回值为null时,可能有两种情况,一种是在集合中没有该键对象,另一种是该键对象没有映射任何值对象,即值对象为null。因此,在Map集合中不应该利用get()方法来判断是否存在某个键,...
题解

Leetcode组合总和1-4题题解

Leetcode组合总和1-4题题解Leecode最近几天的每日一题都是组合总和问题,预测明天是组合总和Ⅳ,因此,提前将组合总和的所有题目刷了,前三题的思路都差不多,最后一题做法有所不同: 组合总和:candidates 中的数字可以无限制重复被选取。 组合总和Ⅱ: candidates 中的每个数字在每个组合中只能使用一次。 组合总和Ⅲ:组合中只允许有1-9的数字,并且每种组合中不存在...
题解

Leetcode全排列1-2题题解

Leetcode全排列1-2题题解对于全排列问题,可能我们很多人从小在数学课上都做过,并且都能由一定的规律将所有排列情况写出来,但如何用编码的方式求解此类问题成了我的问题,或许也成是你们还未解决的问题,其实这类问题的套路都是 dfs + 回溯算法,然后,根据题目要求进行剪枝,我将通过下面两题来讲解这类问题具体做法。 46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例...
题解

Leetcode两数-四数之和题解

Leecode两数-四数之和题解最近两天做了两数之和,四数之和,并且之前也做过三数之和,感觉这几道题解法都差不多,并且用同样的方法能求解n数之和。 1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 1234给定 nums ...
题解