
领扣
风再起时~
这个作者很懒,什么都没留下…
展开
-
4. 寻找两个正序数组的中位数
这道题让我们求两个有序数组的中位数,而且限制了时间复杂度为O(log (m+n)),看到这个时间复杂度,自然而然的想到了应该使用二分查找法来求解。那么回顾一下中位数的定义,如果某个有序数组长度是奇数,那么其中位数就是最中间那个,如果是偶数,那么就是最中间两个数字的平均值。这里对于两个有序数组也是一样的,假设两个有序数组的长度分别为m和n,由于两个数组长度之和 m+n 的奇偶不确定,因此需要分情况来讨论,对于奇数的情况,直接找到最中间的数即可,偶数的话需要求最中间两个数的平均值。为了简化代码,不分情况讨论,我转载 2021-06-23 10:12:34 · 478 阅读 · 0 评论 -
剑指 Offer 62. 圆圈中最后剩下的数字
最后只剩下一个元素,假设这个最后存活的元素为 num, 这个元素最终的的下标一定是0 (因为最后只剩这一个元素),所以如果我们可以推出上一轮次中这个num的下标,然后根据上一轮num的下标推断出上上一轮num的下标,直到推断出元素个数为n的那一轮num的下标,那我们就可以根据这个下标获取到最终的元素了。推断过程如下:首先最后一轮中num的下标一定是0, 这个是已知的。那上一轮应该是有两个元素,此轮次中 num 的下标为 (0 + m)%n = (0+3)%2 = 1; 说明这一轮删除之前num的下标原创 2021-06-13 19:54:04 · 150 阅读 · 0 评论 -
564. 寻找最近的回文数
给定一个整数 n ,你需要找到与它最近的回文数(不包括自身)。“最近的”定义为两个整数差的绝对值最小。示例 1:输入: “123”输出: “121”注意:n 是由字符串表示的正整数,其长度不超过18。如果有多个结果,返回最小的那个。class Solution {public: string nearestPalindromic(string n) { l...原创 2019-06-17 21:19:37 · 928 阅读 · 0 评论 -
316. 去除重复字母
给定一个仅包含小写字母的字符串,去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入: “bcabc”输出: “abc”示例 2:输入: “cbacdcbc”输出: “acdb”我的代码 超时class Solution {public: string min_s="zzzzzzz"; in...原创 2019-06-20 20:41:49 · 531 阅读 · 0 评论 -
1012. 至少有 1 位重复的数字
给定正整数 N,返回小于等于 N 且具有至少 1 位重复数字的正整数。示例 1:输入:20输出:1解释:具有至少 1 位重复数字的正数(<= 20)只有 11 。示例 2:输入:100输出:10解释:具有至少 1 位重复数字的正数(<= 100)有 11,22,33,44,55,66,77,88,99 和 100 。我的代码 4msclass Solution {...原创 2019-06-20 16:20:29 · 672 阅读 · 1 评论 -
629. K个逆序对数组
给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数。逆序对的定义如下:对于数组的第i个和第 j个元素,如果满i < j且 a[i] > a[j],则其为一个逆序对;否则不是。由于答案可能很大,只需要返回 答案 mod 109 + 7 的值。示例 1:输入: n = 3, k = 0输出: 1解释:只有数组 [1,2,3...转载 2019-06-15 14:01:39 · 568 阅读 · 0 评论 -
761. 特殊的二进制序列
特殊的二进制序列是具有以下两个性质的二进制序列:0 的数量与 1 的数量相等。二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。给定一个特殊的二进制序列 S,以字符串形式表示。定义一个操作 为首先选择 S 的两个连续且非空的特殊的子串,然后将它们交换。(两个子串为连续的当且仅当第一个子串的最后一个字符恰好为第二个子串的第一个字符的前一个字符。)在任意次数的操作之后,交换后的字符...转载 2019-06-15 11:06:04 · 667 阅读 · 0 评论 -
815. 公交路线
我们有一系列公交路线。每一条路线 routes[i] 上都有一辆公交车在上面循环行驶。例如,有一条路线 routes[0] = [1, 5, 7],表示第一辆 (下标为0) 公交车会一直按照 1->5->7->1->5->7->1->… 的车站路线行驶。假设我们从 S 车站开始(初始时不在公交车上),要去往 T 站。 期间仅可乘坐公交车,求出最少乘坐的公...原创 2019-06-19 21:12:05 · 455 阅读 · 0 评论 -
805. 数组的均值分割
给定的整数数组 A ,我们要将 A数组 中的每个元素移动到 B数组 或者 C数组中。(B数组和C数组在开始的时候都为空)返回true ,当且仅当在我们的完成这样的移动后,可使得B数组的平均值和C数组的平均值相等,并且B数组和C数组都不为空。示例:输入:[1,2,3,4,5,6,7,8]输出: true解释: 我们可以将数组分割为 [1,4,5,8] 和 [2,3,6,7], 他们的平均...原创 2019-06-14 21:33:32 · 630 阅读 · 0 评论 -
146. LRU缓存机制
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数...原创 2019-06-09 17:01:53 · 112 阅读 · 0 评论 -
407. 接雨水 II
给定一个 m x n 的矩阵,其中的值均为正整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。说明:m 和 n 都是小于110的整数。每一个单位的高度都大于0 且小于 20000。示例:给出如下 3x6 的高度图:[[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]]返回 4。struct Node{ int i...转载 2019-06-14 17:20:44 · 2098 阅读 · 0 评论 -
773. 滑动谜题
在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示.一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换.最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开。给出一个谜板的初始状态,返回最少可以通过多少次移动解开谜板,如果不能解开谜板,则返回 -1 。我的代码 8msclass Solutio...原创 2019-06-17 10:32:46 · 306 阅读 · 0 评论 -
432. 全 O(1) 的数据结构
实现一个数据结构支持以下操作:Inc(key) - 插入一个新的值为 1 的 key。或者使一个存在的 key 增加一,保证 key 不为空字符串。Dec(key) - 如果这个 key 的值是 1,那么把他从数据结构中移除掉。否者使一个存在的 key 值减一。如果这个 key 不存在,这个函数不做任何事情。key 保证不为空字符串。GetMaxKey() - 返回 key 中值最大的任意一...原创 2019-06-21 14:50:08 · 601 阅读 · 0 评论 -
114. 二叉树展开为链表
给定一个二叉树,原地将它展开为链表。例如,给定二叉树1/ 2 5/ \ 3 4 6将其展开为:123456/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *...原创 2019-08-20 17:06:04 · 110 阅读 · 0 评论 -
多个大整数相加
可以将所有数读入并反转存在vector<vector> v中,再建一个vector v2;保存所有数第1位的和。。。。。第n位的和。然后遍历v2,将v2[i]/10加到v[i+1】中。这样只需进行一遍进位操作。比一个一个相加快很多...原创 2019-08-20 17:04:46 · 251 阅读 · 0 评论 -
栈的应用
链接:https://www.nowcoder.com/questionTerminal/e6e57ef2771541dfa2f1720e50bebc9a来源:牛客网给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序列 [6 2 1]则根据上述公式,...原创 2019-08-06 17:18:21 · 100 阅读 · 0 评论 -
887. 鸡蛋掉落
你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X &l...原创 2019-07-01 11:43:56 · 196 阅读 · 0 评论 -
329. 矩阵中的最长递增路径
给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[[9,9,4],[6,6,8],[2,1,1]]输出: 4解释: 最长递增路径为 [1, 2, 6, 9]。dfs+记忆矩阵(保存以该点位起点的最长路径) 44msclass Soluti...原创 2019-06-29 11:09:45 · 336 阅读 · 0 评论 -
995. K 连续位的最小翻转次数
在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。返回所需的 K 位翻转的次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。输入:A = [0,0,0,1,0,1,1,0], K = 3输出:3解释:翻转 A[0],A[1],A[2]: A变成 [1,1,1,1,0,1,...原创 2019-06-28 16:15:43 · 344 阅读 · 0 评论 -
928. 尽量减少恶意软件的传播 II
(这个问题与 尽量减少恶意软件的传播 是一样的,不同之处用粗体表示。)在节点网络中,只有当 graph[i][j] = 1 时,每个节点 i 能够直接连接到另一个节点 j。一些节点 initial 最初被恶意软件感染。只要两个节点直接连接,且其中至少一个节点受到恶意软件的感染,那么两个节点都将被恶意软件感染。这种恶意软件的传播将继续,直到没有更多的节点可以被这种方式感染。假设 M(initi...原创 2019-06-27 11:53:47 · 289 阅读 · 0 评论 -
1044. 最长重复子串
给出一个字符串 S,考虑其所有重复子串(S 的连续子串,出现两次或多次,可能会有重叠)。返回任何具有最长可能长度的重复子串。(如果 S 不含重复子串,那么答案为 “”。)示例 1:输入:“banana”输出:“ana”示例 2:输入:“abcd”输出:""提示:2 <= S.length <= 10^5S 由小写英文字母组成。二分法+滚动哈希 1344mscl...原创 2019-06-22 19:50:07 · 2820 阅读 · 0 评论 -
410. 分割数组的最大值
给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。注意:数组长度 n 满足以下条件:1 ≤ n ≤ 10001 ≤ m ≤ min(50, n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7...原创 2019-06-19 10:18:57 · 463 阅读 · 0 评论 -
145. 二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tre...原创 2019-06-08 20:10:35 · 93 阅读 · 0 评论 -
领扣 65. 有效数字
验证给定的字符串是否为数字。例如:“0” =&gt; true" 0.1 " =&gt; true“abc” =&gt; false“1 a” =&gt; false“2e10” =&gt; true说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。我的提交 28msbool deal_blank(int i,string原创 2019-01-09 16:36:24 · 149 阅读 · 0 评论 -
132. 分割回文串 II
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。示例:输入: “aab”输出: 1解释: 进行一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。解法一 https://blog.youkuaiyun.com/qq_41231926/article/details/85335825public class Solution...转载 2019-06-07 11:11:37 · 106 阅读 · 0 评论 -
140. 单词拆分 II
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入:s = “catsanddog”wordDict = [“cat”, “cats”, “and”, “sand”, “dog”]输出:...原创 2019-06-08 17:18:36 · 117 阅读 · 0 评论 -
793. 阶乘函数后K个零
f(x) 是 x! 末尾是0的数量。(回想一下 x! = 1 * 2 * 3 * … * x,且0! = 1)例如, f(3) = 0 ,因为3! = 6的末尾没有0;而 f(11) = 2 ,因为11!= 39916800末端有2个0。给定 K,找出多少个非负整数x ,有 f(x) = K 的性质。示例 1:输入:K = 0输出:5解释: 0!, 1!, 2!, 3!, and 4! ...转载 2019-06-18 20:17:17 · 347 阅读 · 0 评论 -
42. 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6class Solution {public...原创 2019-06-13 21:41:43 · 100 阅读 · 0 评论 -
440. 字典序的第K小数字
给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。注意:1 ≤ k ≤ n ≤ 109。示例 :输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。我的代码 超时class Solution {public: int resul...原创 2019-06-13 19:33:16 · 526 阅读 · 0 评论 -
460. LFU缓存
设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,最近最少使用的键将被去除。...原创 2019-06-13 16:32:27 · 241 阅读 · 0 评论 -
782. 变为棋盘
# 思路:思路来源于@lee215# 对于最终要满足有效棋盘的数组,必须满足以下三个条件:# # 1. 所有行的形式只有两种: 如果一种是00011111,另一种必然是它的逆序,11100000。# 因为如果还有其他形式的行,最终必然不能在若干次变换后成为有效棋盘# 列,也是相同的# 因此,为了保证这一性质,对于每个子棋盘,必须满足四个角点是四个0或者四个1或者两个0和两个1# 因为...转载 2019-06-13 10:19:43 · 233 阅读 · 0 评论 -
679. 24 点游戏
你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例 1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24示例 2:输入: [1, 2, 1, 2]输出: False注意:除法运算符 / 表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 。每个运算符对两个...原创 2019-06-12 21:52:26 · 848 阅读 · 0 评论 -
420. 强密码检验器
一个强密码应满足以下所有条件:由至少6个,至多20个字符组成。至少包含一个小写字母,一个大写字母,和一个数字。同一字符不能连续出现三次 (比如 “…aaa…” 是不允许的, 但是 “…aa…a…” 是可以的)。编写函数 strongPasswordChecker(s),s 代表输入字符串,如果 s 已经符合强密码条件,则返回0;否则返回要将 s 修改为满足强密码条件的字符串所需要进行修改的...转载 2019-06-12 20:49:43 · 1346 阅读 · 0 评论 -
126. 单词接龙 II
给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 begin...原创 2019-03-05 10:24:07 · 303 阅读 · 0 评论 -
124. 二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例 2:输入: [-10,9,20,null,null,15,7]-10/ 9 20/ 15 7输出: 42我的代码static int...原创 2019-03-04 19:50:53 · 209 阅读 · 0 评论 -
领扣 52. N皇后 II
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数 n,返回 n 皇后不同的解决方案的数量。位运算解法 0ms (注:将设想的棋盘视为从右到左你,n-1,0)原理可参考https://www.cnblogs.com/TenosDoIt/p/3801621.htmlint limit,sum;void dfs_bit(int l...原创 2019-01-09 20:07:16 · 132 阅读 · 0 评论 -
领扣 72. 编辑距离
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符3.替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -&amp;gt; rorse (将 ‘h’ 替换为 ‘r’)rorse -&amp;gt; rose (...原创 2019-01-11 19:56:27 · 152 阅读 · 0 评论 -
领扣 76. 最小覆盖子串
给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”说明:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。我的代码 8msstruct Index_char{ int index; c...原创 2019-01-16 21:44:54 · 285 阅读 · 0 评论 -
领扣 84. 柱状图中最大的矩形
给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。我的代码 8ms思路为:先遍历一遍,在class Solution {public: in...原创 2019-01-20 09:29:37 · 247 阅读 · 0 评论 -
领扣 115. 不同的子序列
给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)我的代码static int x=[](){ std::ios::sync_with_stdio(false); cin....原创 2019-02-15 17:41:56 · 121 阅读 · 0 评论