题目描述: 小明数学不太好,如果他计算a+b需要花费(a+b)的时间,现在有n个数字,让小明去求这n个数字的和,求小明计算这n个数字所花费的最小时间; 备注:每次都要先算最小的两个数的和,这样总时间才会最小。 输入:[1,2,3] 输出:9 说明: 1+2需要3秒 3+3需要6秒 总共需要9秒 输入:[1,2,3,4,5] 输出:33 说明: 1+2需要3秒 3+3需要6秒 4+5需要9秒 6+9需要15秒 可以使用优先队列PriorityQueue实现; public static void main(Strin…

2021年3月4日 0条评论 10点热度 阅读全文

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。   示例 1: 输入:s = "ADOBECODEBANC", t = "ABC" 输出:"BANC" 示例 2: 输入:s = "a", t = "a" 输出:"a" class Solution { public: string minWindow(string s, string t) { …

2021年3月3日 0条评论 9点热度 阅读全文

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。   示例 1: 输入:s = "ADOBECODEBANC", t = "ABC" 输出:"BANC" 示例 2: 输入:s = "a", t = "a" 输出:"a" class Solution { public: string minWindow(string s, string t) { …

2021年3月3日 0条评论 8点热度 阅读全文

介绍 有这么一类题,会考察利用已有的数据结构(包含某些算法)来设计一种新的数据结构。 经典例题 【力扣-232. 用栈实现队列】 /** * 主要难点在于pop时要记得检查s2栈是否为空 */ import java.util.Stack; //leetcode submit region begin(Prohibit modification and deletion) class MyQueue { private Stack<Integer> s1; private Stack<Intege…

2021年3月3日 0条评论 9点热度 阅读全文

题目描述 给定一个数组, 求如果排序之后, 相邻两数的最大差值, 要求时间复杂度O(N), 且要求不能用非基于比较的排序。 解法1:暴力法 题目要求时间复杂度为O(N),这意味着我们不能用基于比较的排序方法对数组做排序,因为最快也是O(NlogN)的,但还是做了一下。 方法就是排序了之后用后一个数减前一个数,更新maxGap的值就好了 解法2:利用桶的思想但不排序 这里,数组有N个数,就分N+1个桶,整个解法并不涉及排序 用三个数组记录每个桶的信息(最大值、最小值、是否有数) 最后,利用解法1的思想,求出所有当前桶…

2021年1月17日 0条评论 8点热度 阅读全文

NowCode 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] 输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8 输出: 6 解释: 节点 2 …

2021年1月16日 0条评论 12点热度 阅读全文

Acwing算法课汇总(基础+提高) 基础算法 排序 AcWing 785. 快速排序 AcWing 786. 第k个数 AcWing 787. 归并排序 AcWing 788. 逆序对的数量 高精度 AcWing 791. 高精度加法 AcWing 792. 高精度减法 AcWing 793. 高精度乘法 AcWing 794. 高精度除法 双指针算法 AcWing 799. 最长连续不重复子序列 AcWing 800. 数组元素的目标和 AcWing 2816. 判断子序列 数据结构 哈希表 AcWing 84…

2020年9月21日 0条评论 4点热度 阅读全文

在刷题过程中的一些常用API调用,记录下来,方便复习。   〇:输入、输出 远程在线面试的手撕代码环节,通常需要白板上写代码。 如果需要在控制台输入、输出,需要借助Scanner类。 示例如下: import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //方法1:一般用来接收数组。以空格分界 whi…

2020年6月26日 0条评论 3点热度 阅读全文

给满出二叉树,编写算法将其转化为求和树 什么是求和树:二叉树的求和树, 是一颗同样结构的二叉树,其树中的每个节点将包含原始树中的左子树和右子树的和。 二叉树: 10 / -2 6 / \ / \ 8 -4 7 5 求和树: 20(4-2+12+6) / 4(8-4) 12(7+5) / \ / \ 0 0 0 0 二叉树给出前序和中序输入,求和树要求中序输出; 所有处理数据不会大于int; 输入描述: 2行整数,第1行表示二叉树的前序遍历,第2行表示二叉树的中序遍历,以空格分割 输出描述: 1行整数,表示求和树的中…

2019年7月16日 0条评论 25点热度 阅读全文

【题目描述】 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 时间限制:1秒 空间限制:32768K 热度指数:378352 本题知识点: 字符串 【解题思路】 把字符串分为两部分:一部分是字符串的第一个字符,另一部分是第一个字符以后的所有字符。 第一步是求所有可能出现在第一个位置的字符,即把第一个字符和后…

2019年5月15日 0条评论 5点热度 阅读全文