07 2019 档案

摘要:#include #include #include using namespace std; class Node{ public: Node *next[26]; bool isend; Node(){ for(int i=0;inext[word[i]-'a']) p->next... 阅读全文
posted @ 2019-07-31 23:49 YF-1994 阅读(199) 评论(0) 推荐(0)
摘要:对一个数组,如果要同时进行多次求区间和操作,修改元素操作。怎样能使时间复杂度降到最低?线段树为我们解决了这样一个问题。 阅读全文
posted @ 2019-07-31 17:04 YF-1994 阅读(160) 评论(0) 推荐(0)
摘要:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2输出: [0,1,1]示例 2: 输入: 5输出: [0,1,1,2,1,2]进阶: 给出时间复杂度为O(n*sizeof(integer))的 阅读全文
posted @ 2019-07-30 23:35 YF-1994 阅读(109) 评论(0) 推荐(0)
摘要:给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2: 给定链表 1->2- 阅读全文
posted @ 2019-07-30 23:32 YF-1994 阅读(147) 评论(0) 推荐(0)
摘要:如何得到一个数据流中的中位数? 如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 算法:维护两个堆 阅读全文
posted @ 2019-07-30 19:03 YF-1994 阅读(173) 评论(0) 推荐(0)
摘要:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 阅读全文
posted @ 2019-07-30 00:12 YF-1994 阅读(284) 评论(0) 推荐(0)
摘要:给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回 true,因为 t 与 阅读全文
posted @ 2019-07-29 23:10 YF-1994 阅读(269) 评论(0) 推荐(0)
摘要:class LRUCache { public: struct Node{ int key; Node *pre, *next; Node(int x):key(x),pre(NULL),next(NULL){} }; int tot, c; Node *head, *tail; unordered_map>... 阅读全文
posted @ 2019-07-29 19:31 YF-1994 阅读(631) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; vectormaxs,mins; vectorst; int where(int num, int n, int mi, int mx){ return (num-mi)*n/(mx-mi); } int vmax(vector& arr, int n){ int mx=INT_MIN... 阅读全文
posted @ 2019-07-29 16:07 YF-1994 阅读(229) 评论(0) 推荐(0)
摘要:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明: 所有 阅读全文
posted @ 2019-07-28 22:52 YF-1994 阅读(103) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; typedef pair PII; typedef long long LL; int main(void){ int n; cin>>n; setS; S.insert({INT_MAX,0}); S.insert({INT_MIN,0})... 阅读全文
posted @ 2019-07-28 22:39 YF-1994 阅读(261) 评论(0) 推荐(0)
摘要:其中P是要查找的字符串 阅读全文
posted @ 2019-07-28 17:40 YF-1994 阅读(131) 评论(0) 推荐(0)
摘要:算法:DP 阅读全文
posted @ 2019-07-28 00:18 YF-1994 阅读(219) 评论(0) 推荐(0)
摘要:#include #include using namespace std; const int N=100010; int n; int a[N],q[N]; int main(void){ cin>>n; for(int i=0; i>a[i]; int len=0; q[0]=-2e9; for(int i=0;i>1; i... 阅读全文
posted @ 2019-07-27 19:51 YF-1994 阅读(206) 评论(0) 推荐(0)
摘要:我们知道递归实际上是一个压栈的操作,故要写成非递归,我们需要利用栈。 前序: 中序: 后序: 阅读全文
posted @ 2019-07-27 14:33 YF-1994 阅读(2267) 评论(0) 推荐(0)
摘要:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动 阅读全文
posted @ 2019-07-25 20:17 YF-1994 阅读(211) 评论(0) 推荐(0)
摘要:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: 阅读全文
posted @ 2019-07-25 19:48 YF-1994 阅读(86) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; const int N=6010; int f[N][2],n,happy[N]; int h[N],e[N],ne[N],idx; bool has_father[N]; void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++; } ... 阅读全文
posted @ 2019-07-25 19:37 YF-1994 阅读(228) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; const int N=12,M=1>n>>m,n||m){ for(int i=0;i>j&1){ if(cnt&1)st[i]=false; cnt=0; ... 阅读全文
posted @ 2019-07-25 18:18 YF-1994 阅读(455) 评论(0) 推荐(0)
摘要:现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]] 输出: true解 阅读全文
posted @ 2019-07-25 14:54 YF-1994 阅读(160) 评论(0) 推荐(0)
摘要:算法实现:自底向上的归并排序 阅读全文
posted @ 2019-07-25 11:38 YF-1994 阅读(1419) 评论(0) 推荐(0)
摘要:#include #include using namespace std; const int N=110; int v[N][N],w[N][N]; int s[N],n,m,f[N]; int main(void){ cin>>n>>m; for(int i=1;i>s[i]; for(int j=0;j>v[i][j]>>w[i][j]; ... 阅读全文
posted @ 2019-07-24 23:48 YF-1994 阅读(242) 评论(0) 推荐(0)
摘要:算法:二进制优化,动态规划 阅读全文
posted @ 2019-07-24 23:30 YF-1994 阅读(469) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; const int N=1000010; queueq; int h[N],e[2*N],ne[2*N],idx,dis[N],res[N],n,m; bool st[N]; void add(int a, int b){ e[idx]=b,ne[idx]=h[a],h[a... 阅读全文
posted @ 2019-07-24 16:01 YF-1994 阅读(173) 评论(0) 推荐(0)
摘要:算法:动态规划 阅读全文
posted @ 2019-07-24 15:00 YF-1994 阅读(202) 评论(0) 推荐(0)
摘要:题目描述 有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步 输入输出格式 输入格式: 一行四个数据,棋盘的大小和马的坐标 输出格式: 一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1) 输入输出样例 输入 阅读全文
posted @ 2019-07-23 22:35 YF-1994 阅读(279) 评论(0) 推荐(0)
摘要:题目描述 由数字0组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向。现要求把闭合圈内的所有空间都填写成2.例如:6×6的方阵(n=6),涂色前和涂色后的方阵如下: 输入输出格式 输入格式: 每组测试数据第一行一个整数n(1≤n≤30) 接下来n行,由0和1组成的n×n 阅读全文
posted @ 2019-07-23 22:31 YF-1994 阅读(203) 评论(0) 推荐(0)
摘要:题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。 如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。 输入 阅读全文
posted @ 2019-07-23 22:29 YF-1994 阅读(566) 评论(0) 推荐(0)
摘要:题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N 阅读全文
posted @ 2019-07-23 22:27 YF-1994 阅读(497) 评论(0) 推荐(0)
摘要:#include #include #include #include #include #include using namespace std; int main(void){ int n; cin>>n; vectorf; for(int i=0,a;i>a; f.push_back(a); } vectorup(n+1,... 阅读全文
posted @ 2019-07-23 20:39 YF-1994 阅读(272) 评论(0) 推荐(0)
摘要:将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 输入输出样例 输入样例#1: 复制 7 3 输出样例#1: 复制 4 #include<iostream> #i 阅读全文
posted @ 2019-07-23 15:52 YF-1994 阅读(228) 评论(0) 推荐(0)
摘要:题目描述 有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。 输入输出格式 输入格式: 两个正整数N,K。 输出格式: 一个正整数,为不同方式数,由于答案可能很大,你需要输出ansmod100003后的结果。 输入输出样例 输入样例#1: 复制 阅读全文
posted @ 2019-07-23 15:40 YF-1994 阅读(198) 评论(0) 推荐(0)
摘要:问题描述 如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。 输入描述 输入包括n+1行: 第一行为单词个数n(1 ≤ n ≤ 50) 接下来的n行,每行 阅读全文
posted @ 2019-07-23 09:58 YF-1994 阅读(215) 评论(0) 推荐(0)
摘要:牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。 算法:我们先分别求出以第i个元素结尾和开始的递增子序列。然后遍历一遍数组,计算当前相隔一个元素的两 阅读全文
posted @ 2019-07-23 00:08 YF-1994 阅读(315) 评论(0) 推荐(0)
摘要:小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作: 1、将a_i放入b序列的末尾2、逆置b序列小易需要你计算输出操作n次之后的b序列 输入描述:输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。 第二行包括n个整数a_i( 阅读全文
posted @ 2019-07-23 00:04 YF-1994 阅读(406) 评论(0) 推荐(0)
摘要:附图: 阅读全文
posted @ 2019-07-22 20:41 YF-1994 阅读(211) 评论(0) 推荐(0)
摘要:题目描述 有一个仅由数字000与111组成的n×nn \times nn×n格迷宫。若你位于一格0上,那么你可以移动到相邻444格中的某一格111上,同样若你位于一格1上,那么你可以移动到相邻444格中的某一格000上。 你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。 阅读全文
posted @ 2019-07-22 14:51 YF-1994 阅读(311) 评论(0) 推荐(0)
摘要:给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之间边的数目表 阅读全文
posted @ 2019-07-21 19:33 YF-1994 阅读(278) 评论(0) 推荐(0)
摘要:给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6示例 2: 输入: [-10,9,20,null,null,15,7] -10 / 阅读全文
posted @ 2019-07-21 19:31 YF-1994 阅读(265) 评论(0) 推荐(0)
摘要:给定n个正整数ai,请你求出每个数的欧拉函数。 阅读全文
posted @ 2019-07-21 16:42 YF-1994 阅读(130) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; typedef long long LL; const int N=1e9+7; int n; int main(void){ cin>>n; unordered_mapprime; for(int i=0,a;i>a; for(int i=2;i1)prim... 阅读全文
posted @ 2019-07-21 16:01 YF-1994 阅读(106) 评论(0) 推荐(0)
摘要:给定n个正整数aiai,请你输出这些数的乘积的约数个数,答案对109+7109+7取模。 输入格式 第一行包含整数n。 接下来n行,每行包含一个整数aiai。 输出格式 输出一个整数,表示所给正整数的乘积的约数个数,答案需对10^9+7取模。 阅读全文
posted @ 2019-07-21 15:53 YF-1994 阅读(222) 评论(0) 推荐(0)
摘要:给定一个表示分数的非负整数数组。 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。 给定一个表示分数的数组,预测玩家1是否会成为赢家。 阅读全文
posted @ 2019-07-20 20:32 YF-1994 阅读(324) 评论(0) 推荐(0)
摘要:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回符合要求的最少分割次数。示例:输入: "aab"输出: 1解释: 进行一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。 阅读全文
posted @ 2019-07-20 17:00 YF-1994 阅读(124) 评论(0) 推荐(0)
摘要:给定一个字符串 S 和一个字符串 T,计算在 S 的子序列中 T 出现的个数。一个字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)示例 1:输入: S = "rabbbit" 阅读全文
posted @ 2019-07-20 16:12 YF-1994 阅读(110) 评论(0) 推荐(0)
摘要:编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明: 1 是丑数。 n 不超过1690。 阅读全文
posted @ 2019-07-20 16:00 YF-1994 阅读(87) 评论(0) 推荐(0)
摘要:N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。 例如:-2,11,-4,13,-5 阅读全文
posted @ 2019-07-20 15:41 YF-1994 阅读(124) 评论(0) 推荐(0)
摘要:一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。示例 2:输入: "226"输出: 3解 阅读全文
posted @ 2019-07-20 15:11 YF-1994 阅读(292) 评论(0) 推荐(0)
摘要:给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 109 + 7 的值。 示例 1:输入: m = 2 阅读全文
posted @ 2019-07-20 14:55 YF-1994 阅读(295) 评论(0) 推荐(0)
摘要:给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。算法:动态规划 阅读全文
posted @ 2019-07-20 14:18 YF-1994 阅读(211) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; typedef long long ll; const int N=10010; int f[N]; ll s[N]; vectorres{10010,10010}; int main() { int n, k ; cin>>n>>k; for... 阅读全文
posted @ 2019-07-20 14:06 YF-1994 阅读(327) 评论(0) 推荐(0)
摘要:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4算法:动态规划 阅读全文
posted @ 2019-07-20 13:41 YF-1994 阅读(137) 评论(0) 推荐(0)
摘要:回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。每个字符串都可以通过向中间添加一些字符,使之变为回文字符串。 例如:abbc 添加2个字符可以变为 acbbca,也可以添加3个变为 abbcbba。方案1只需要添加2个字符,是所有方案中添加字符数量最少的。 现在,给定一个字 阅读全文
posted @ 2019-07-20 00:07 YF-1994 阅读(2564) 评论(0) 推荐(0)
摘要:给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对。例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9),(0,8),(2,6),(3,5)。 输入 第1行:用空格隔开的2个数,K N,N为A数组的长度。(2 阅读全文
posted @ 2019-07-19 20:59 YF-1994 阅读(476) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; #define N 1010 int dp[N][N]; char c; int main() { char a[N]; char b[N]; scanf("%s%s",a,b); int la=strlen(a); int lb=strlen... 阅读全文
posted @ 2019-07-19 20:00 YF-1994 阅读(529) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; bool cmp(string &s, string &t){ if(s.size()!=t.size())return s.size()>t.size(); for(int i=0;it[i]; } return true; } vector... 阅读全文
posted @ 2019-07-19 19:45 YF-1994 阅读(121) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; int n; vector get_yue(int x){ vectorres; for(int i=1;i>n; for(int i=0,a;i>a; auto p=get_yue(a); for(auto x:p)cout<<x<<' ';... 阅读全文
posted @ 2019-07-19 14:06 YF-1994 阅读(221) 评论(0) 推荐(0)
摘要:#include<iostream> using namespace std; const int N=10000001; int prim[N],cnt; bool st[N]; int primcnt(int n){ for(int i=2;i<=n;i++){ if(!st[i])prim[c 阅读全文
posted @ 2019-07-19 13:59 YF-1994 阅读(126) 评论(0) 推荐(0)
摘要:#include #include using namespace std; int n; void get_prim(int x){ for(int i=2;i1)cout>n; for(int i=0,a;i>a; get_prim(a); } return 0; } 阅读全文
posted @ 2019-07-19 13:58 YF-1994 阅读(169) 评论(0) 推荐(0)
摘要:#include #include using namespace std; int n; bool prim(int x){ if(x>n; for(int i=0,a;i>a; if(prim(a))cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; } 阅读全文
posted @ 2019-07-19 13:50 YF-1994 阅读(420) 评论(0) 推荐(0)
摘要:输入一个长度为n的整数序列,从中找出一段长度不超过m的连续子序列,使得子序列中所有数的和最大。 输入格式 第一行输入两个整数n,m。 第二行输入n个数,代表长度为n的整数序列。 同一行数之间用空格隔开。 输出格式 输出一个整数,代表该序列的最大子序和。 数据范围 1≤n,m≤300000 输入样例: 阅读全文
posted @ 2019-07-18 18:04 YF-1994 阅读(135) 评论(0) 推荐(0)
摘要:给定一个N行M列的01矩阵A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为: 输入格式 第一行两个整数n,m。 接下来一个N行M列的01矩阵,数字之间没有空格。 输出格式 一个N行M列的矩阵B,相邻两个整数之间用一个空格隔开。 输出样例: 阅读全文
posted @ 2019-07-18 14:26 YF-1994 阅读(598) 评论(0) 推荐(0)
摘要:给定一位研究者论文被引用次数的数组(被引用次数是非负整数),数组已经按照升序排列。编写一个方法,计算出研究者的 h 指数。h 指数的定义: “h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她)的 (N 篇论文中)至多有 h 篇论文分别被引用了至少 h 次。( 阅读全文
posted @ 2019-07-18 11:07 YF-1994 阅读(158) 评论(0) 推荐(0)
摘要:给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输 阅读全文
posted @ 2019-07-18 11:00 YF-1994 阅读(128) 评论(0) 推荐(0)
摘要:峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1 阅读全文
posted @ 2019-07-18 10:57 YF-1994 阅读(114) 评论(0) 推荐(0)
摘要:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明: 不能更改原数组(假设数 阅读全文
posted @ 2019-07-18 10:15 YF-1994 阅读(308) 评论(0) 推荐(0)
摘要:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]] 阅读全文
posted @ 2019-07-18 09:53 YF-1994 阅读(161) 评论(0) 推荐(0)
摘要:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log 阅读全文
posted @ 2019-07-18 09:41 YF-1994 阅读(146) 评论(0) 推荐(0)
摘要:给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符示例 1:输入: word1 = "horse", word2 = "ros"输出: 3解释: horse -> ro 阅读全文
posted @ 2019-07-17 16:47 YF-1994 阅读(111) 评论(0) 推荐(0)
摘要:给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。 输入格式 第一行包含两个整数N和M。 第二行包含一个长度为N的字符串,表示字符串A。 第三行包含一个长度为M的字符串,表示字符串B。 字符串均由小写字母构成。 输出格式 输出一个整数,表示最大长度。 数据 阅读全文
posted @ 2019-07-17 16:43 YF-1994 阅读(175) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std; const int N=510,M=100010; int h[N],e[M],ne[M],idx; bool st[N]; int match[N]; int n1,n2,m; void add(int a, int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;... 阅读全文
posted @ 2019-07-17 15:05 YF-1994 阅读(211) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。 由V中的全部n个顶点和E中n-1条边构成 阅读全文
posted @ 2019-07-16 23:46 YF-1994 阅读(1921) 评论(0) 推荐(0)
摘要:给定一个有 N 个结点的二叉树的根结点 root,树中的每个结点上都对应有 node.val 枚硬币,并且总共有 N 枚硬币。 在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动到另一个结点。(移动可以是从父结点到子结点,或者从子结点移动到父结点。)。 返回使每个结点上只有一 阅读全文
posted @ 2019-07-16 23:10 YF-1994 阅读(219) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。 由V中的全部n个顶点和E中n-1条边构成 阅读全文
posted @ 2019-07-16 20:13 YF-1994 阅读(2951) 评论(0) 推荐(0)
摘要:给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明 阅读全文
posted @ 2019-07-16 16:29 YF-1994 阅读(116) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。 再给定k个询问,每个询问包含两个整数x和y,表示查询从点x到点y的最短距离,如果路径不存在,则输出“impossible”。 数据保证图中不存在负权回路。 输入格式 第一行包含三个整数n,m,k 接下来m行,每行包含三个整数x, 阅读全文
posted @ 2019-07-16 11:24 YF-1994 阅读(165) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你判断图中是否存在负权回路。 输入格式 第一行包含整数n和m。 接下来m行每行包含三个整数x,y,z,表示点x和点y之间存在一条有向边,边长为z。 输出格式 如果图中存在负权回路,则输出“Yes”,否则输出“No”。 数据范 阅读全文
posted @ 2019-07-16 10:31 YF-1994 阅读(561) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数n和m。 接下来m行每行包含三个整数x,y,z,表示点x和点y之间存在一条有向边,边 阅读全文
posted @ 2019-07-15 23:44 YF-1994 阅读(227) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible。 注意:图中可能 存在负权回路 。 输入格式 第一行包含三个整数n,m,k。 接下来m行,每行包含三个整数x,y,z,表 阅读全文
posted @ 2019-07-15 21:06 YF-1994 阅读(480) 评论(0) 推荐(0)
摘要:给定一个字符串,逐个翻转字符串中的每个单词。 示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包 阅读全文
posted @ 2019-07-15 20:11 YF-1994 阅读(189) 评论(0) 推荐(0)
摘要:牛牛的好朋友羊羊在纸上写了n+1个整数,羊羊接着抹除掉了一个整数,给牛牛猜他抹除掉的数字是什么。牛牛知道羊羊写的整数神排序之后是一串连续的正整数,牛牛现在要猜出所有可能是抹除掉的整数。例如:10 7 12 8 11 那么抹除掉的整数只可能是95 6 7 8 那么抹除掉的整数可能是4也可能是9输入描述 阅读全文
posted @ 2019-07-15 17:07 YF-1994 阅读(396) 评论(0) 推荐(0)
摘要:DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以配对合成为DNA的双螺旋结构。现在给出两条碱基链,允许在其中一条上做替换操作:把序列 阅读全文
posted @ 2019-07-15 16:36 YF-1994 阅读(1022) 评论(0) 推荐(0)
摘要:牛牛从生物科研工作者那里获得一段字符串数据s,牛牛需要帮助科研工作者从中找出最长的DNA序列。DNA序列指的是序列中只包括'A','T','C','G'。牛牛觉得这个问题太简单了,就把问题交给你来解决。 例如: s = "ABCBOATER"中包含最长的DNA片段是"AT",所以最长的长度是2。 输 阅读全文
posted @ 2019-07-15 11:49 YF-1994 阅读(372) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。 输入格式 第一行包含整数n和m。 接下来m行每行包含三个整数x,y,z,表示点x和点y之间存在一条有向边,边长为z。 输出格式 输出一个整数,表示1号 阅读全文
posted @ 2019-07-14 23:41 YF-1994 阅读(272) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。 若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。 输入格式 第一行包含两个整数n和m 接下来m行,每行包含 阅读全文
posted @ 2019-07-14 21:00 YF-1994 阅读(4625) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为正值。 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1。 输入格式 第一行包含整数n和m。 接下来m行每行包含三个整数x,y,z,表示点x和点y之间存在一条有向边,边长为z。 输出格式 输出一个整数,表示1号 阅读全文
posted @ 2019-07-14 17:11 YF-1994 阅读(386) 评论(0) 推荐(0)
摘要:给定一个n个点m条边的有向图,图中可能存在重边和自环。 所有边的长度都是1,点的编号为1~n。 请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。 输入格式 第一行包含两个整数n和m。 接下来m行,每行包含两个整数a和b,表示存在一条从a走到b的长度为1的边。 输出格式 输出一 阅读全文
posted @ 2019-07-14 16:01 YF-1994 阅读(264) 评论(0) 推荐(0)
摘要:给定一个无向图graph,当这个图为二分图时返回true。 如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。 graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个 阅读全文
posted @ 2019-07-14 16:00 YF-1994 阅读(368) 评论(0) 推荐(0)
摘要:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。 示例: 输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, 阅读全文
posted @ 2019-07-13 17:01 YF-1994 阅读(441) 评论(0) 推荐(0)
摘要:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3输出: 阅读全文
posted @ 2019-07-13 15:36 YF-1994 阅读(217) 评论(0) 推荐(0)
摘要:堆,是一种完全二叉树的树状结构,分为小根堆与大顶堆。本文论述以及代码实现都是小根堆,大根堆同理。 如上图所示,我们可以看到一个完全二叉树,而每个结点的编号与其左右儿子的关系为(假设某结点的编号为u):left=2*u,right=2*u+1。 堆有如下的操作: 1.建堆 2.向下调整 3.向上调整 阅读全文
posted @ 2019-07-13 15:04 YF-1994 阅读(308) 评论(0) 推荐(0)
摘要:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 阅读全文
posted @ 2019-07-13 01:09 YF-1994 阅读(440) 评论(0) 推荐(0)
摘要:示例 1: 输入: [1,2,0]输出: 3示例 2: 输入: [3,4,-1,1]输出: 2示例 3: 输入: [7,8,9,11,12]输出: 1说明: 你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。 算法:我们仅考虑大于0小于等于nums,size()的数,将它们放到各自的位置 阅读全文
posted @ 2019-07-13 01:01 YF-1994 阅读(149) 评论(0) 推荐(0)
摘要:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2: 输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()" 算法:我们用两个变量分别记录左右括号的长度,先从左到 阅读全文
posted @ 2019-07-13 00:49 YF-1994 阅读(122) 评论(0) 推荐(0)
摘要:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定 nums = [1,1,1,2,2,3], 函数应返回新长度 length = 5, 并 阅读全文
posted @ 2019-07-13 00:38 YF-1994 阅读(174) 评论(0) 推荐(0)
摘要:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前 阅读全文
posted @ 2019-07-13 00:30 YF-1994 阅读(120) 评论(0) 推荐(0)
摘要:给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。 返回滑动窗口最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解 阅读全文
posted @ 2019-07-13 00:25 YF-1994 阅读(297) 评论(0) 推荐(0)
摘要:地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼n−1 。 一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格。 但是不能进入行坐标和列坐标的数位之和大于 k 的格子。 请问该机器人能够达到多少个格子? 样例1 样例2 注意: 算法:bfs。 阅读全文
posted @ 2019-07-12 09:57 YF-1994 阅读(178) 评论(0) 推荐(0)
摘要:给定一个二叉树 struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被 阅读全文
posted @ 2019-07-11 22:56 YF-1994 阅读(138) 评论(0) 推荐(0)
摘要:给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则 阅读全文
posted @ 2019-07-11 22:43 YF-1994 阅读(266) 评论(0) 推荐(0)
摘要:给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]算法:暴搜(dfs)。我们搜索出所有的结果并进行保存即可。 阅读全文
posted @ 2019-07-11 18:57 YF-1994 阅读(102) 评论(0) 推荐(0)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: tr 阅读全文
posted @ 2019-07-11 18:55 YF-1994 阅读(93) 评论(0) 推荐(0)
摘要:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。算法:我们只需要考虑n!中有多少个5即可。 阅读全文
posted @ 2019-07-11 18:48 YF-1994 阅读(98) 评论(0) 推荐(0)
摘要:序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化 阅读全文
posted @ 2019-07-11 14:23 YF-1994 阅读(229) 评论(0) 推荐(0)
摘要:序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化二叉搜索树。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列 阅读全文
posted @ 2019-07-11 14:15 YF-1994 阅读(339) 评论(0) 推荐(0)
摘要:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例:给定如下二叉树,以及目标和 sum = 22, 返回: 阅读全文
posted @ 2019-07-10 23:40 YF-1994 阅读(185) 评论(0) 推荐(0)
摘要:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。 算 阅读全文
posted @ 2019-07-10 23:19 YF-1994 阅读(128) 评论(0) 推荐(0)
摘要:给定一个二叉树,原地将它展开为链表。 例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为: 1 \ 2 \ 3 \ 4 \ 5 \ 6 算法:我们每次在遍历的时候,先找到当前结点左子树最右下角的结点,然后让该结点指向当前结点的右子树,然后让当前结点的右指针指向当前结点的左子树,最后 阅读全文
posted @ 2019-07-10 23:15 YF-1994 阅读(150) 评论(0) 推荐(0)
摘要:给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2. 阅读全文
posted @ 2019-07-10 22:51 YF-1994 阅读(144) 评论(0) 推荐(0)
摘要:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉 阅读全文
posted @ 2019-07-10 22:40 YF-1994 阅读(161) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为: [ [15,7], [9,20], [3]] 算法:与 阅读全文
posted @ 2019-07-10 22:37 YF-1994 阅读(134) 评论(0) 推荐(0)
摘要:根据一棵树的中序遍历与后序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 算法:跟上一题类似的算法。需要 阅读全文
posted @ 2019-07-10 22:36 YF-1994 阅读(358) 评论(0) 推荐(0)
摘要:根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 算法:我们先在中序遍历中找到根结 阅读全文
posted @ 2019-07-10 22:32 YF-1994 阅读(192) 评论(0) 推荐(0)
摘要:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 算法:递归即可。 阅读全文
posted @ 2019-07-10 22:16 YF-1994 阅读(110) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。示例 2: 给定二叉树 [1,2,2,3,3,null,null 阅读全文
posted @ 2019-07-10 22:13 YF-1994 阅读(159) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如:给定二叉树 [3,9,20,null,null,15,7], 返回锯齿形层次遍历如下: 阅读全文
posted @ 2019-07-10 21:59 YF-1994 阅读(239) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果: 阅读全文
posted @ 2019-07-10 21:57 YF-1994 阅读(107) 评论(0) 推荐(0)
摘要:给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 算法:我们只需递归判断左右子树是否是镜像的即可。 阅读全文
posted @ 2019-07-10 21:54 YF-1994 阅读(131) 评论(0) 推荐(0)
摘要:给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 算法:我们利用树的结构具有递归关系,来进行递归判断即可。 阅读全文
posted @ 2019-07-10 21:49 YF-1994 阅读(107) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 算法:我们只需要知道BST的性质:一颗合法的BST树它的中序遍历一定是升序无重复数排列。为此,我们 阅读全文
posted @ 2019-07-10 21:44 YF-1994 阅读(109) 评论(0) 推荐(0)
摘要:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 算法:动态规划。我们用f[i]表示i个结点的BST有多少种。那么左子树可能为0,1,...n-1。对应的右子树则为n-1,...0。根据排列组合知,总数为f[k]*f[n-k-1]求和。 阅读全文
posted @ 2019-07-10 21:38 YF-1994 阅读(128) 评论(0) 推荐(0)
摘要:给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树。 示例: 输入: 3输出:[ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索 阅读全文
posted @ 2019-07-10 21:31 YF-1994 阅读(182) 评论(0) 推荐(0)
摘要:回忆一下祖玛游戏。现在桌上有一串球,颜色有红色(R),黄色(Y),蓝色(B),绿色(G),还有白色(W)。 现在你手里也有几个球。每一次,你可以从手里的球选一个,然后把这个球插入到一串球中的某个位置上(包括最左端,最右端)。接着,如果有出现三个或者三个以上颜色相同的球相连的话,就把它们移除掉。重复这 阅读全文
posted @ 2019-07-10 14:40 YF-1994 阅读(649) 评论(0) 推荐(0)
摘要:给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。 示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 L 阅读全文
posted @ 2019-07-10 11:00 YF-1994 阅读(129) 评论(0) 推荐(0)
摘要:给定两个非空链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储单个数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入: (7 -> 2 -> 4 阅读全文
posted @ 2019-07-10 10:54 YF-1994 阅读(246) 评论(0) 推荐(0)
摘要:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么 阅读全文
posted @ 2019-07-10 10:51 YF-1994 阅读(106) 评论(0) 推荐(0)
摘要:反转一个单链表。 示例: 阅读全文
posted @ 2019-07-10 10:48 YF-1994 阅读(167) 评论(0) 推荐(0)
摘要:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5算法:我们每次将链表中的结点与目标值比较时,记录下当前结点的前驱结点,便于我们操作。 阅读全文
posted @ 2019-07-10 10:30 YF-1994 阅读(102) 评论(0) 推荐(0)
摘要:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。 示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of 阅读全文
posted @ 2019-07-10 10:22 YF-1994 阅读(141) 评论(0) 推荐(0)
摘要:在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5算法:归并排序(且只能归并排序,因为题目做了要求)。我们依据归并排序的思想。将 阅读全文
posted @ 2019-07-10 10:14 YF-1994 阅读(279) 评论(0) 推荐(0)
摘要:对链表进行插入排序。 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次迭代 阅读全文
posted @ 2019-07-10 10:05 YF-1994 阅读(187) 评论(0) 推荐(0)
摘要:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。 示例 1:输入:head = [3,2,0,-4 阅读全文
posted @ 2019-07-10 09:47 YF-1994 阅读(202) 评论(0) 推荐(0)
摘要:将一个二叉搜索树就地转化为一个已排序的双向循环链表。可以将左右孩子指针作为双向循环链表的前驱和后继指针。为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点 阅读全文
posted @ 2019-07-10 09:37 YF-1994 阅读(758) 评论(0) 推荐(0)
摘要:给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到 阅读全文
posted @ 2019-07-09 23:46 YF-1994 阅读(118) 评论(0) 推荐(0)
摘要:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深拷贝。 示例: 输入:{"$id":"1","next":{"$id":"2","next":null,"random":{"$ref":"2"},"val":2},"random":{" 阅读全文
posted @ 2019-07-09 23:40 YF-1994 阅读(368) 评论(0) 推荐(0)
摘要:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -10, null, 5], 阅读全文
posted @ 2019-07-09 23:24 YF-1994 阅读(226) 评论(0) 推荐(0)
摘要:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。 说明:1 ≤ m ≤ n ≤ 链表长度。 示例: 输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL 算法:我们先反转中间(2->3->4==>4->3->2),再把剩余两 阅读全文
posted @ 2019-07-09 23:07 YF-1994 阅读(160) 评论(0) 推荐(0)
摘要:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5 算法:类似于merge操作。我们 阅读全文
posted @ 2019-07-09 22:51 YF-1994 阅读(90) 评论(0) 推荐(0)
摘要:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2输出: 1->2示例 2: 输入: 1->1->2->3->3输出: 1->2->3 算法:直接删除 阅读全文
posted @ 2019-07-09 22:41 YF-1994 阅读(150) 评论(0) 推荐(0)
摘要:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2: 输入: 1->1->1->2->3输出: 2->3 算法:我们用两个指针扫描即可,需要注意要不断判断结点是否为空。 阅读全文
posted @ 2019-07-09 22:37 YF-1994 阅读(93) 评论(0) 推荐(0)
摘要:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1- 阅读全文
posted @ 2019-07-09 22:23 YF-1994 阅读(108) 评论(0) 推荐(0)
摘要:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 阅读全文
posted @ 2019-07-09 21:06 YF-1994 阅读(183) 评论(0) 推荐(0)
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例:给定 1->2->3->4, 你应该返回 2->1->4->3. 算法:我们只需要明确如何交换两个结点即可。具体解释见代码。 阅读全文
posted @ 2019-07-09 20:42 YF-1994 阅读(146) 评论(0) 推荐(0)
摘要:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6算法:归并。我们利用归并排序的思想对链表进行排序即可。故时间复杂度为O(nlogn),空间复杂度为O(n)。 阅读全文
posted @ 2019-07-09 20:39 YF-1994 阅读(140) 评论(0) 推荐(0)
摘要:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4算法:线性扫描。我们只需从头到尾扫一遍两个链表。将小的插到新链表头部。最后不要忘了接上未连接的部分。 阅读全文
posted @ 2019-07-09 20:31 YF-1994 阅读(77) 评论(0) 推荐(0)
摘要:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?算法:线性扫描。我们维护两个指针即可。 阅读全文
posted @ 2019-07-09 20:24 YF-1994 阅读(124) 评论(0) 推荐(0)
摘要:冒泡排序做了优化,都是很基础的排序算法就不多做什么说明了。 阅读全文
posted @ 2019-07-09 20:02 YF-1994 阅读(222) 评论(0) 推荐(0)
摘要:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] 阅读全文
posted @ 2019-07-09 15:52 YF-1994 阅读(151) 评论(0) 推荐(0)
摘要:给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。 示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子 阅读全文
posted @ 2019-07-09 15:48 YF-1994 阅读(207) 评论(0) 推荐(0)
摘要:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按 阅读全文
posted @ 2019-07-09 11:54 YF-1994 阅读(224) 评论(0) 推荐(1)
摘要:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 阅读全文
posted @ 2019-07-09 11:16 YF-1994 阅读(293) 评论(0) 推荐(0)
摘要:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股 阅读全文
posted @ 2019-07-09 10:35 YF-1994 阅读(114) 评论(0) 推荐(0)
摘要:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 阅读全文
posted @ 2019-07-09 10:31 YF-1994 阅读(94) 评论(0) 推荐(0)
摘要:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0说明: 阅读全文
posted @ 2019-07-09 10:24 YF-1994 阅读(93) 评论(0) 推荐(0)
摘要:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢? 示例 1: 输入: [1,0 阅读全文
posted @ 2019-07-08 23:30 YF-1994 阅读(95) 评论(0) 推荐(0)
摘要:给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例 1: 输入: [1,3,4,2,2]输出: 2示例 2: 输入: [3,1,3,4,2]输出: 3说明: 不能更改原数组( 阅读全文
posted @ 2019-07-08 23:21 YF-1994 阅读(128) 评论(0) 推荐(0)
摘要:你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 bool 阅读全文
posted @ 2019-07-08 23:10 YF-1994 阅读(255) 评论(0) 推荐(0)
摘要:假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 请找出其中最小的元素。 你可以假设数组中不存在重复元素。 示例 1: 输入: [3,4,5,1,2]输出: 1示例 2: 输入: [4,5,6,7, 阅读全文
posted @ 2019-07-08 22:57 YF-1994 阅读(120) 评论(0) 推荐(0)
摘要:编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1: 输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]] 阅读全文
posted @ 2019-07-08 22:54 YF-1994 阅读(172) 评论(0) 推荐(0)
摘要:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 阅读全文
posted @ 2019-07-08 22:44 YF-1994 阅读(167) 评论(0) 推荐(0)
摘要:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5输出: 2示例 2: 输入: [1,3,5,6], 2输出: 1示例 3: 输入: [1,3,5,6], 阅读全文
posted @ 2019-07-08 22:37 YF-1994 阅读(237) 评论(0) 推荐(0)
摘要:题目描述请实现 int sqrt(int x)。 请计算并返回 xx 的正平方根,保证 xx 是一个非负整数。注意返回类型是整数,所以我们只返回正平方根的整数部分。 样例1输入:4输出:2样例2输入:8输出:2解释:8的正平方根是 2.82842...,它的整数部分是2. 算法:二分 直接套模板二分 阅读全文
posted @ 2019-07-08 22:34 YF-1994 阅读(196) 评论(0) 推荐(0)
摘要:有n堆石头,现在请将它们分成两堆,并要求两堆的重量和尽可能接近,输出两堆石头的重量和,结果按降序排列。 算法:动态规划 阅读全文
posted @ 2019-07-08 22:28 YF-1994 阅读(340) 评论(0) 推荐(0)
摘要:给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。 示例: nums = [1, 2, 3]target = 4 所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1) 请注意,顺序不同的序列 阅读全文
posted @ 2019-07-08 22:21 YF-1994 阅读(167) 评论(0) 推荐(0)
摘要:出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。解集不能包含重复的组合。 示例 1: 输入: k = 3, n = 7输出: [[1,2,4]]示例 2: 输入: k = 3, n = 9输出: [[1, 阅读全文
posted @ 2019-07-08 22:20 YF-1994 阅读(130) 评论(0) 推荐(0)
摘要:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。解集不能包含重复的组合。 示例 1: 输入: candi 阅读全文
posted @ 2019-07-08 22:17 YF-1994 阅读(219) 评论(0) 推荐(0)
摘要:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1: 输入: 阅读全文
posted @ 2019-07-08 22:16 YF-1994 阅读(205) 评论(0) 推荐(0)
摘要:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],] 算法:基础的dfs题目。我们在枚举的时候可以考虑选和不选两种情况即可。 阅读全文
posted @ 2019-07-08 21:46 YF-1994 阅读(187) 评论(0) 推荐(0)
摘要:给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意: num 的长度小于 10002 且 ≥ k。 num 不会包含任何前导零。示例 1 :输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形 阅读全文
posted @ 2019-07-08 20:45 YF-1994 阅读(274) 评论(0) 推荐(0)
摘要:Supervin有一个独特的计算器。 此计算器由一个显示器,一个加号按钮和一个减号按钮构成。 目前,计算器显示器上显示整数 N。 按加号按钮可将计算器显示屏上显示的当前数字增加1。 同理,按减号按钮可将计算器显示屏上显示的当前数字减1。 计算器不显示任何前导零。 例如,如果计算器显示屏上显示100, 阅读全文
posted @ 2019-07-08 20:11 YF-1994 阅读(575) 评论(0) 推荐(0)
摘要:二分模板有两种,看情况用,主要的区分情况在于check的逻辑性以及mid在左半区间还是右半区间的划分 阅读全文
posted @ 2019-07-08 20:04 YF-1994 阅读(94) 评论(0) 推荐(0)
摘要:输入n个整数,找出其中最小的k个数。 注意: 数据保证k一定小于等于输入数组的长度; 输出数组内元素请按从小到大顺序排序; 样例 输入:[1,2,3,4,5,6,7,8] , k=4 输出:[1,2,3,4]算法:堆(priority_queue)。我们维护一个堆,每次不断将数组中的元素加入进来(当 阅读全文
posted @ 2019-07-08 19:54 YF-1994 阅读(137) 评论(0) 推荐(0)
摘要:给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0", 阅读全文
posted @ 2019-07-08 19:44 YF-1994 阅读(232) 评论(0) 推荐(0)
摘要:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。 图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。 示例: 阅读全文
posted @ 2019-07-08 19:38 YF-1994 阅读(1121) 评论(0) 推荐(0)
摘要:题目描述: 有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被 阅读全文
posted @ 2019-07-08 19:33 YF-1994 阅读(127) 评论(0) 推荐(0)
摘要:题目描述:清一色是麻将番种之一,指由一种花色的序数牌组成的和牌.数字1-9,每个数字最多有4张牌我们不考虑具体花色,我们只看数字组合。刻子:三张一样的牌;如: 111, 222, 333, …, 999顺子:三张连续的牌;如: 123, 234, 345, …, 789对子:两张相同的牌;如: 11 阅读全文
posted @ 2019-07-08 19:17 YF-1994 阅读(2232) 评论(0) 推荐(0)
摘要:题目描述 定义一个二维数组N*M(其中2<=N<=10;2<=M<=10),如5 × 5数组下所示: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表 阅读全文
posted @ 2019-07-08 18:55 YF-1994 阅读(601) 评论(0) 推荐(0)
摘要:给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], [ 阅读全文
posted @ 2019-07-08 18:16 YF-1994 阅读(141) 评论(0) 推荐(0)
摘要:输入一个长度为n的整数序列。 接下来输入m个操作,每个操作包含三个整数l, r, c,表示将序列中[l, r]之间的每个数加上c。 请你输出进行完所有操作后的序列。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数,表示整数序列。 接下来m行,每行包含三个整数l,r,c,表示一个操作。 输出 阅读全文
posted @ 2019-07-08 18:11 YF-1994 阅读(433) 评论(0) 推荐(0)
摘要:给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。 示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释: [1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转 阅读全文
posted @ 2019-07-08 18:01 YF-1994 阅读(1554) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。算法:动态规划。设f[i]表示以第i个元素结尾时最大子序和。 那么 阅读全文
posted @ 2019-07-08 17:52 YF-1994 阅读(96) 评论(0) 推荐(0)
摘要:给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums = [ [9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9 阅读全文
posted @ 2019-07-08 17:34 YF-1994 阅读(690) 评论(0) 推荐(0)
摘要:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。算 阅读全文
posted @ 2019-07-08 17:20 YF-1994 阅读(155) 评论(0) 推荐(0)
摘要:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明: 可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。 你算法的时间复杂度应该为 O(n2) 阅读全文
posted @ 2019-07-08 17:06 YF-1994 阅读(143) 评论(0) 推荐(0)
摘要:给定一个长度为n的整数序列,请找出最长的不包含重复数字的连续子序列,输出它的长度。 输入格式 第一行包含整数n。 第二行包含n个整数(均在0~100000范围内),表示整数序列。 输出格式 共一行,包含一个整数,表示最长的不包含重复数字的连续子序列的长度。 数据范围 1≤n≤100000 输入样例: 阅读全文
posted @ 2019-07-08 16:58 YF-1994 阅读(2277) 评论(0) 推荐(0)
摘要:给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。 注意这里是找连续子串。 算法:动态规划。f[i][j]表示第一个字符串前i个字符中与第二个字符串前j个中的最长连续子串长度 那么状态转移为:当s1(i)==s2(j)时,f[i][j]=max(f[i][j],f[i-1][j 阅读全文
posted @ 2019-07-08 16:50 YF-1994 阅读(1344) 评论(0) 推荐(0)
摘要:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字 阅读全文
posted @ 2019-07-08 09:17 YF-1994 阅读(132) 评论(0) 推荐(0)
摘要:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"算法:暴力枚举(分回文串的长度为奇数还是偶数,滚动求最长值) 阅读全文
posted @ 2019-07-08 09:13 YF-1994 阅读(107) 评论(0) 推荐(0)
摘要:#include using namespace std; const int N=1000010; int a[N],q[N]; void merge_sort(int a[], int l, int r){ if(l>=r)return ; int mid=l+r>>1; merge_sort(a,l,mid),merge_sort(a,mid+1,r); i... 阅读全文
posted @ 2019-07-07 21:26 YF-1994 阅读(166) 评论(0) 推荐(0)
摘要:时间复杂度:O(n); 主要利用快排的partition思想(if(j-l+1>=k)左半边,否则右半边) 阅读全文
posted @ 2019-07-07 21:16 YF-1994 阅读(499) 评论(0) 推荐(0)
摘要:void quick_sort(int a[], int l, int r){ if(l>=r)return ; int i=l-1,j=r+1,x=a[l]; while(ix); if(i<j)swap(a[i],a[j]); } quick_sort(a,l,j),quick_sort(a,j+1,r); } 阅读全文
posted @ 2019-07-07 21:10 YF-1994 阅读(192) 评论(0) 推荐(0)
摘要:又到了丰收的季节,恰逢小易去牛牛的果园里游玩。牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。牛牛觉得这个问题太简单,所以希望你来替他回答。 输入描述: 输出描述: m行,第i行输出第 阅读全文
posted @ 2019-07-07 20:43 YF-1994 阅读(428) 评论(0) 推荐(0)
摘要:小A参加了一个n人的活动,每个人都有一个唯一编号i(i>=0 & i<n),其中m对相互认识,在活动中两个人可以通过互相都认识的一个人介绍认识。现在问活动结束后,小A最多会认识多少人? 算法:并查集 阅读全文
posted @ 2019-07-07 20:34 YF-1994 阅读(1552) 评论(0) 推荐(0)
摘要:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 阅读全文
posted @ 2019-07-07 20:28 YF-1994 阅读(148) 评论(0) 推荐(0)
摘要:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 阅读全文
posted @ 2019-07-07 20:19 YF-1994 阅读(211) 评论(0) 推荐(0)
摘要:题目描述给定一个整型数组,要求返回两个数的下标,使得两数之和等于给定的目标值,要求同一个下标不能使用两次。数据保证有且仅有一组解。 样例给定数组 nums = [2, 7, 11, 15],以及目标值 target = 9, 由于 nums[0] + nums[1] = 2 + 7 = 9,所以 r 阅读全文
posted @ 2019-07-07 20:11 YF-1994 阅读(141) 评论(0) 推荐(0)