面试算法力扣95-二叉搜索树的所有解法结果?
题目
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?
输出所有的解法结果。
示例:
Input: n = 3
Output: [[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]]
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:
1 ...
2020-06-08 07:13:08 |
Algorithm
面试算法:有序链表转换为高度平衡的二叉搜索树
题目
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。
示例:
给定的有序链表: [-10, -3, 0, 5, 9],
一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:
0
/ \
...
2020-06-08 07:13:08 |
Algorithm
面试算法力扣96-二叉搜索树一共有多少种?
题目
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?
示例:
输入: 3
输出: 5
解释:
给定 n = 3, 一共有 5 种不同结构的二叉搜索树:
1 3 3 2 1
\ / / / \ \
3 2 1 1 3 ...
2020-06-08 07:13:08 |
Algorithm
java 如何实现 binary search 二分查找法?
顺序查找
如果让你在一堆书架上找到自己想要的书,你会怎么找呢?
实际上最简单最粗暴的方式就是一本一本的看过去。
这个用计算机实现就对应着顺序查找。
概念
顺序查找适合于存储结构为顺序存储或链接存储的线性表。
基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有...
2020-06-08 07:13:08 |
Algorithm
面试算法:在排序数组中查找元素的第一个和最后一个位置的 3 种境界
写在前面
有些题目看起来很简单,深挖下去往往有很多值得深思的东西。
本文就来讨论一下二分查找法的问题,以及这道题背后真正想考察的东西。
题目
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
进阶:
你可以设计并实现时间复杂度为 O(log n) 的...
2020-06-08 07:13:08 |
Algorithm
leecode 精选 11-backtracking 回溯算法 + 剪枝
缘起
一个不会解的问题
https://leetcode.com/problems/combination-sum/
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。
解集...
2020-06-08 07:13:08 |
Algorithm
leecode 精选 10-substring-with-concatenation-of-all-words 串联所有单词的子串
串联所有单词的子串
给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。
注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。
示例 1:
输入:
s = "barfoothefoobarman",
words = ["foo","bar"]
输出...
2020-06-08 07:13:08 |
Algorithm
leecode 精选 09-divide two integers 两数相除
整数相除
给定两个整数,被除数 dividend 和除数 divisor。
将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend 除以除数 divisor 得到的商。
整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
示例 1:
输入: divide...
2020-06-08 07:13:08 |
Algorithm