09 2021 档案
摘要:LeetCode 71. 简化路径 一道简单的题目,重点是演示C++如何简单实现按照指定字符分割字符串。 题目描述 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表
阅读全文
摘要:LeetCode 面试题 03.05. 栈排序 题目描述 栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。 示例1
阅读全文
摘要:LeetCode 829. 连续整数求和 其实是一道数学题。把他当作一道待定系数的一元二次方程,然后求其合法整数取值。 题目描述 给定一个正整数 N,试求有多少组连续正整数满足所有数字之和为 N? 示例 1: 输入: 5 输出: 2 解释: 5 = 5 = 2 + 3,共有两组连续整数([5],[2
阅读全文
摘要:LeetCode 29. 两数相除 用位运算模拟除法。 题目描述 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数
阅读全文
摘要:LeetCode 470. 用 Rand7() 实现 Rand10() 一道经典面试题。 题目描述 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。 不要使用系统的 Math.random() 方法。 示例 1:
阅读全文
摘要:LeetCode 341. 扁平化嵌套列表迭代器 题目描述 给你一个嵌套的整数列表 nestedList 。每个元素要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。请你实现一个迭代器将其扁平化,使之能够遍历这个列表中的所有整数。 实现扁平迭代器类 NestedIterator
阅读全文
摘要:LeetCode 3. 无重复字符的最长子串 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb"
阅读全文
摘要:LeetCode 179. 最大数 题目描述 给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。 注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。 示例 1: 输入:nums = [10,2] 输出:"210" 示例 2: 输入:nums = [
阅读全文
摘要:LeetCode 220. 存在重复元素 III 一道medium题,但是不好想,想不到。 题目描述 给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) ⇐ t ,同时又满足 abs(i - j) ⇐
阅读全文
摘要:C++ 构造函数 & 析构函数 美团二面被问了一个问题,没有答上来,今天整理一下相关知识。 问:为什么析构函数要声明成虚函数? 涉及到虚函数,表明这个问题实际上和多态有关系,具体来讲是用基类指针指向的子类对象如何虚构的问题。 举个例子,以下函数的输出是什么? 典型代码 #include <bits/
阅读全文
摘要:LeetCode 891. 子序列宽度之和 一道hard题目,经历了多轮优化。 题目描述 给定一个整数数组 A ,考虑 A 的所有非空子序列。 对于任意序列 S ,设 S 的宽度是 S 的最大元素和最小元素的差。 返回 A 的所有子序列的宽度之和。 由于答案可能非常大,请返回答案模 10^9+7。
阅读全文
摘要:LeetCode 447. Number of Boomerangs 题目描述 You are given n points in the plane that are all distinct, where points[i] = [xi, yi]. A boomerang is a tuple
阅读全文
摘要:HJ93 数组分组 dfs/dp 题目描述 输入int型数组,询问该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,输出true;不满足时输出false。 本题含有多组样例输入。 输入描述: 第一行是
阅读全文
摘要:HJ77 火车进站 题目描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。 要求输出所有火车出站的方案,以字典序排序输出。 输入描述: 有多组测试
阅读全文
摘要:LeetCode 338. 比特位计数 一道简单题,但是把位运算和DP结合起来,很有意思。 题目描述 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入
阅读全文
摘要:协程库中 WaitGroup / CountDownLatch 实现 这几天读了一些协程的文章。看了看开源协程库,在腾讯的 libco 和魅族的 libgo 中选择了 libgo,结果发现这边提供了协程池,但却没有提供CountDownLatch、SyncClosure之类的设置,要是每次起一组任务
阅读全文
摘要:简单C++线程池 Java 中有一个很方便的 ThreadPoolExecutor,可以用做线程池。想找一下 C++ 的类似设施,尤其是能方便理解底层原理可上手的。网上找到的 demo,基本都是介绍的 projschj 的C++11线程池。这份源码最后的commit日期是2014年,现在是2021年
阅读全文
摘要:switch 比 if/else 效率更高? 在很多人的概念里,switch 的执行效率是比 if/else 高的。依据就是很多人以为的,if/else 是用了多次比较判断,而 switch 是用的跳转表一次跳转。事实真的是这样吗? 考察以下几个例子,switch 改成 if/else 之后效率会变
阅读全文
摘要:LeetCode 264. 丑数 II 题目描述 给你一个整数 n ,请你找出并返回第 n 个 丑数 。 丑数 就是只包含质因数 2、3 和/或 5 的正整数。 示例 1: 输入:n = 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组
阅读全文
摘要:LeetCode 229. 求众数 II 给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。 示例 1: 输入:[3,2,3] 输出:[3] 示例 2: 输入:nums = [1] 输出:[
阅读全文
摘要:NC41 最长无重复子数组 题目描述 给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。 子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组 示例1 输入: [2,3,4,5] 返回值: 4 说明:
阅读全文
摘要:NC105 二分查找-II 题目描述 请实现有重复数字的升序数组的二分查找 给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1 示例1 输入: [1,2,4,4,5],4 返回值
阅读全文
摘要:假设有n层楼,2个鸡蛋。问最少摔几次能够找出恰好把鸡蛋摔坏的楼层。 这是一个典型的 min(max) 问题。 解题思路 动态规划 第一种思路是,动态规划,这里状态有两个维度:可用鸡蛋个数,待检验楼层个数。 假设第一次从i层开始摔,如果碎了,还剩一个鸡蛋,只能从一层开始遍历,最坏需要i次;如果没碎,问
阅读全文
摘要:C++ 编译期计算 模板元编程是个强大的工具,据说足以作为一门完备的语言了。这里只是简单记录一下,利用模板实现编译期计算的方式。 sum([1,...n]) #include <stdio.h> // 递推公式 template<int n> class Sum { public: static c
阅读全文
摘要:PDD4 迷宫寻路 来着牛客网的一道拼多多笔试题,有门有锁的一个迷宫问题。 题目描述 假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径。迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路。迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与之匹配的钥匙,只有先拿到
阅读全文

浙公网安备 33010602011771号