- 博客(141)
- 收藏
- 关注
原创 1743. 从相邻元素对还原数组
题目描述存在一个由 n 个不同元素组成的整数数组 nums ,但你已经记不清具体内容。好在你还记得 nums 中的每一对相邻元素。给你一个二维整数数组 adjacentPairs ,大小为 n - 1 ,其中每个 adjacentPairs[i] = [ui, vi]表示元素 ui 和 vi 在 nums 中相邻。题目数据保证所有由元素 nums[i] 和 nums[i+1] 组成的相邻元素对都存在于 adjacentPairs 中,存在形式可能是[nums[i], nums[i+1]] ,也可
2021-07-25 22:54:07
164
原创 【每日一刷】leetcode-1319. 连通网络的操作次数
用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线 connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回 -1 。来源:力扣(LeetC
2021-01-23 21:02:47
353
原创 Kotlin 实战学习 函数的定义与调用
3.2 让函数更好调用可读性优化 => 命名参数当指明一个参数的名称的时候,为了避免混淆,那它之后的所有参数都要标明名称。避免过多的函数重载 => 默认参数值消除静态工具类 => 顶层函数和属性3.3 给别人的类添加方法:扩展函数和属性实质上,扩展函数是静态函数,她把调用对象作为他的第一个参数。调用扩展函数,不会创建适配对象或任何运行时的额外消耗。注意,因为是静态函...
2019-12-23 12:40:43
187
原创 Kotlin 可空类型系统的学习
引言什么是类型?为啥变量拥有类型?“类型就是数据的分类… 决定了该类型可能的值和可以完成的操作。”那么套用这个定义来分析一下NULL值在类型系统的地位。比如在java中null是一种数值,但是当一个引用为null的时候,并不可以在这个引用调用该类型的任何方法,这不就意味着java的类型系统在值为NULL的时候不能很好的工作,甚至当你使用instanceof运算符的时候,它的类型都是N...
2019-12-17 23:13:06
174
原创 《kotlin实战》阅读笔记(1)
变量 分为可变的引用(var)不可变的引用(val)可变和不可变类似于c++ 中 const 对于指针的限定,而且是顶层const 或者说指正常量。然后变量是可以进行自动类型推断的,类似于auto,前提是进行了初始化同时对于val 来说,如果编译器可以保证val只进行唯一一次初始化,则可以根据条件初始化成不同的值。 val message : String if ...
2019-10-30 11:45:31
177
原创 【洛谷】P3952 时间复杂度 题解
题目小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确。A++语言的循环结构如下:F i x y循环体E其中F i x y表示新建变量 ii(变量 ii 不可与未被销毁的变量重名)并初始化为 xx, ...
2019-10-10 13:56:18
603
原创 【leetcode】652. 寻找重复的子树
给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。思路首先是进行序列化,然后序列化的过程中,进行树的深度优先搜索,在树的搜索过程中,进行一个结果的统计。毕竟树的深度优先访问的时间负杂度是O(n)的。代码class Solution {public: vector<TreeNo...
2019-09-25 10:06:20
247
原创 【洛谷】P1308 统计单词数
大致思路是将读入的数据转换成小写,转换的函数是使用了transform这个函数具体用法可以看 transform然后就是进行单词查找了。文章可以看成是很多段组成,每一段都是由一片连续的空格 + 一片连续的字母构成。所以,先去掉字母前面多余的空格,让指针指向第一个单词的第一个字母,然后进行判断是否找到了一个单词,进行统计然后移动到移动到下一个空格的开始这样保证每次最外层的循环都是从每...
2019-09-24 11:18:47
234
原创 【数据结构学习-线段树】洛谷 P3372 【模板】线段树 1
线段树概念线段树(segment Tree) 是一种基于分治思想的二叉树结构,用于区间上进行信息统计用的。数据结构定义线段树每个节点都代表一个区间。线段树具有唯一根节点,代表整个区间。线段树每个叶子节点代表一个长度为1的元区间。对于每个内部节点,它的左子节点是[l, mid], 右子节点是[mid + 1, r], mid = (l + r ) / 2 ,向下取整。数据结构操作...
2019-09-23 09:10:56
170
原创 【leetcode】设计哈希表 - 解决方案
希望有两种解决方案可以将时间复杂度从 O(n) 降低到 O(1)。交换我们可以使用一种巧妙的策略。首先,用存储桶中的最后一个元素交换要移除的元素。然后删除最后一个元素。通过这种方法,我们成功地在 O(1) 的时间复杂度中去除了元素。链表实现此目标的另一种方法是使用链表而不是数组列表。通过这种方式,我们可以在不修改列表中的顺序的情况下删除元素。该策略时间复杂度为 O(1)。...
2019-09-18 22:53:13
395
原创 【leetcode】841. 钥匙和房间
有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,…,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,…,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。最初,除 ...
2019-09-16 10:17:03
272
原创 【leetcode】285. 二叉搜索树中的顺序后继
给你一个二叉搜索树和其中的某一个结点,请你找出该结点在树中顺序后继的节点。结点 p 的后继是值比 p.val 大的结点中键值最小的结点。思路一开始我是按照寻找找某节点的后继去写的class Solution {public: TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) { if (p->ri...
2019-09-15 11:49:12
679
原创 【leetcode】395. 至少有K个重复字符的最长子串
题目找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = “aaabb”, k = 3输出:3最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-substring-wit...
2019-09-09 13:01:03
266
原创 【leetcode】204. 计数质数
线性筛套一下模板代码class Solution {public: int countPrimes(int n) { if (n < 2) return 0; vector<int> arr(n , 0); for (int i = 2; i < n;i ++) { if (!arr[i]...
2019-09-08 23:09:43
135
原创 【leetcode】253. 会议室 II
给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。示例 1:输入: [[0, 30],[5, 10],[15, 20]]输出: 2示例 2:输入: [[7,10],[2,4]]输出: 1来源:力扣(Leet...
2019-09-08 22:56:30
8107
3
原创 【leetcode】269. 火星词典
题目现有一种使用字母的全新语言,这门语言的字母顺序与英语顺序不同。假设,您并不知道其中字母之间的先后顺序。但是,会收到词典中获得一个 不为空的 单词列表。因为是从词典中获得的,所以该单词列表内的单词已经 按这门新语言的字母顺序进行了排序。您需要根据这个输入的列表,还原出此语言中已知的字母顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl...
2019-09-01 13:01:09
2936
1
原创 【leetcode】29. 两数相除
题目描述给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/divide-two-integers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载...
2019-08-31 22:31:15
147
原创 【leetcode】139. 单词拆分
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-break著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出...
2019-08-20 18:01:25
123
原创 【leetcode】647. 回文子串
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。思路啊啊啊,注意一点就可以,一个串是子串,只有其中的子串都是回文串才算得上是回文串,所以说,如果一个串不是回文串,那么也没有必要继续向后找了,另一点需要注意的就是寻找回文串的时候,肯定要从中间向两边去找,通过定义left,right来解决对于回文串是...
2019-08-10 14:35:08
109
原创 【leetcode】315. 计算右侧小于当前元素的个数
给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-of-smaller-numbers-after-self著作权归领扣网络所有。商业转载请...
2019-08-10 09:57:34
174
原创 【leetcode】124. 二叉树中的最大路径和
题目给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。思路这个题目,一开始我是没有思路的,一脸懵逼。最初想着是搜索去解决,但是结果不一定经过根节点,然后我就没有思路了。那简化一下问题,如果是答案一定经过根节点,那递归求解就很简单了。不过深究一下递归求解过程中的函数的定义,该函数是可以求出以...
2019-08-05 18:24:11
180
转载 【leetcode】11. 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-wate...
2019-08-04 09:23:45
100
转载 【leetcode】94. 二叉树的中序遍历
参考Morris Traversal方法遍历二叉树 非递归,不用栈,O(1)空间一、中序遍历步骤:如果当前节点的左孩子为空,则输出当前节点并且将当前节点的右孩子作为当前节点。意味着如果当前节点只有右子树自然应该向右遍历了。如果当前节点的左孩子不为空,在当前节点的左子树中找到当前节点在中序遍历下的前驱节点。a) 如果前驱节点的右孩子为空,将前驱结点的右孩子设置为当前节点。当前节...
2019-08-03 22:53:24
98
原创 【leetcode】238. 除自身以外数组的乘积
给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组...
2019-08-03 16:08:41
100
原创 【计算机组成原理回顾】理解虚拟内存机制
推荐阅读 计算机底层知识拾遗(一)理解虚拟内存机制虚拟内存主要提供了3个能力:给所有进程提供一致的地址空间,每个进程都认为自己是在独占使用单机系统的存储资源保护每个进程的地址空间不被其他进程破坏,隔离了进程的地址访问根据缓存原理,上层存储是下层存储的缓存,虚拟内存把主存作为磁盘的高速缓存,在主存和磁盘之间根据需要来回传送数据,高效地使用了主存虚拟地址和物理地址对于每个进...
2019-08-01 16:12:32
1312
原创 【mysql 回顾】数据库事务的四大特性以及事务的隔离级别
推荐阅读数据库事务的四大特性以及事务的隔离级别理解事务的4种隔离级别数据库事务的隔离级别隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。Read uncommitted ⇒ 脏读Read committed ⇒ 不可重...
2019-08-01 14:09:38
146
原创 【leetcode】55. 跳跃游戏
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。思路一开始我是想要dfs 但是超时,然后想用dp来解决但是问题就是从左向右跳,右边的状态知道,左边不知道怎么办??所以从右边开始,向左边跳,逆推这个过程,然后判断0是否可以到达,然后问题又来了还是慢 -_-方法 4:贪心当我们把代码改成自底向上的模...
2019-07-31 16:31:32
169
原创 【leetcode】162. 寻找峰值
.峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-peak-e...
2019-07-30 20:39:20
126
原创 【leetcode】78. 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。思路dfs 硬怼用位来表示我们知道,对于给定一个集合里,所有元素的集合它们应该满足这样一个公式: 假设所有的组合数之和为sum,则有sum = C(n, 0) + C(n, 1) + …+ C(n, n); 分别对应取集合中的一个元素,两个元素…n个元素。而通过数学公式二项式定义...
2019-07-30 10:37:01
97
原创 【leetcode】334. 递增的三元子序列
给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。来源:力扣(LeetCod...
2019-07-29 21:31:50
182
原创 【leetcode】49. 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。来源:力扣(LeetCode)链接:https...
2019-07-29 16:47:11
121
原创 【leetcode】73. 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。思路想法第二种方法不高效的地方在于我们会重复对同一行或者一列赋零。我们可以推迟对行和列赋零的操作。我们可以用每行和每列的第一个元素作为标记,这个标记用来表示这一行或者这一列是否需要赋零。这意味着对于每个节点不需要访问 M+NM+N 个格子而是只需要对标记点的两个格子赋值。if cel...
2019-07-29 16:42:53
206
原创 【leetcode】316. 去除重复字母
题目给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: “abc”示例 2:输入: “cbacdcbc”输出: “acdb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplic...
2019-07-28 14:01:37
4076
原创 【leetcode】1071. 字符串的最大公因子
对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。示例 1:输入:str1 = “ABCABC”, str2 = “ABC”输出:“ABC”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem...
2019-07-27 23:47:38
212
原创 【c++ 回顾】const
const作用修饰变量 ==> 变量不可变 代替C语言中的#define 常量 可以让编译器进行类型检查匹配修饰指针顶层const 指针的值不可变,但指针指向的可以变底层const 指针指向的值不可以变,但指针可以变const 修饰函数形参的时候,编译器会去掉顶层的const,保留底层的const,所以可以通过底层的const来修饰函数进行函数重载,这个时候会...
2019-07-27 15:52:30
109
原创 【c++ 回顾】STL-空间配置器
空间配置器通常的内存申请的方式有两种 1. malloc, 2. new 来申请malloc 申请内存的过程是这样的 它内部有一个将多个可用内存块连接为一个的空闲链表。在调用时,它沿链表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到...
2019-07-27 10:52:41
168
原创 【c++回顾】STL 六大组件
STL 六大组件容器: 各种数据结构, 如 vector, list, deque, set, map, 用来存放数据算法: 各种常用算法, 如 sort, search, copy, erase等,从实现的角度来看是一种function template迭代器: 容器和算法之间的胶合剂, 是由容器设计者实现的接口,用来遍历自己容器内部的元素,从而使得不同的容器对外表现相似。函数对象: ...
2019-07-27 10:51:55
182
原创 【leetcode】114. 二叉树展开为链表
给定一个二叉树,原地将它展开为链表。思路class Solution {public: void flatten(TreeNode* root) { while (root != nullptr) { if (root->left != nullptr) { auto most_right = root-&...
2019-07-25 20:27:21
104
原创 【leetcode】260. 只出现一次的数字 III
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]注意:结果输出的顺序并不重要,对于上面的例子, [5, 3] 也是正确答案。你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?来源:力扣(LeetCode)链接:https://leetcode-...
2019-07-25 19:56:31
201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人