随笔分类 -  数据结构与算法

摘要:n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 class Solution { public: //检查是否符合规则 int check(int i,int j,int n,vector<string> & a) { int x,y; for(x= 阅读全文
posted @ 2020-09-27 18:47 lancelee98 阅读(177) 评论(0) 推荐(0)
摘要:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 阅读全文
posted @ 2020-08-10 18:10 lancelee98 阅读(73) 评论(0) 推荐(0)
摘要:给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 示例 1: 输入: s = "barfoothefoobarm 阅读全文
posted @ 2020-08-10 10:10 lancelee98 阅读(192) 评论(0) 推荐(0)
摘要:给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。 示例 1: 输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2: 输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连 阅读全文
posted @ 2020-08-09 21:20 lancelee98 阅读(173) 评论(0) 推荐(0)
摘要:给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。 字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。 说明: 字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1: 输入:s: "cbaeb 阅读全文
posted @ 2020-08-07 17:47 lancelee98 阅读(106) 评论(0) 推荐(0)
摘要:给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 示例 1: 输入:"tree" 输出:"eert" 解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2: 输入:"cccaaa" 输出:"cccaaa" 阅读全文
posted @ 2020-08-07 16:51 lancelee98 阅读(220) 评论(0) 推荐(0)
摘要:有 N 个网络节点,标记为 1 到 N。 给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。 现在,我们从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号? 阅读全文
posted @ 2020-07-29 00:36 lancelee98 阅读(264) 评论(0) 推荐(0)
摘要:对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。 格式 该图包含 n 个节点,标记为 0 到 n - 1。给定数字 n 和一个无向边 edges 列表 阅读全文
posted @ 2020-07-28 18:55 lancelee98 阅读(221) 评论(0) 推荐(0)
摘要:1 //8皇后问题 2 #include <stdio.h> 3 int res=0; 4 int a[8][8]={0}; 5 //检查放在此位置是否与上面的行冲突 6 int check(int i,int j) 7 { 8 int x,y; 9 for(x=i-1;x>=0;x--)if(a[ 阅读全文
posted @ 2020-07-21 20:46 lancelee98 阅读(155) 评论(0) 推荐(0)
摘要:给定一个非负整数数组 A,如果该数组每对相邻元素之和是一个完全平方数,则称这一数组为正方形数组。 返回 A 的正方形排列的数目。两个排列 A1 和 A2 不同的充要条件是存在某个索引 i,使得 A1[i] != A2[i]。 示例 1: 输入:[1,17,8]输出:2解释:[1,8,17] 和 [1 阅读全文
posted @ 2020-07-21 15:07 lancelee98 阅读(257) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper。区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。 说明:最直观的算法复杂度是 O(n2) ,请在此基础上优化你的算法。 阅读全文
posted @ 2020-07-21 13:50 lancelee98 阅读(363) 评论(0) 推荐(0)
摘要:给定一个化学式formula(作为字符串),返回每种原子的数量。 原子总是以一个大写字母开始,接着跟随0个或任意个小写字母,表示原子的名字。 如果数量大于 1,原子后会跟着数字表示原子的数量。如果数量等于 1 则不会跟数字。例如,H2O 和 H2O2 是可行的,但 H1O2 这个表达是不可行的。 两 阅读全文
posted @ 2020-07-21 11:19 lancelee98 阅读(416) 评论(0) 推荐(0)
摘要:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1: 输入: 阅读全文
posted @ 2020-07-20 19:24 lancelee98 阅读(122) 评论(0) 推荐(0)
摘要:问题描述 : 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 输出: True 说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),( 阅读全文
posted @ 2020-07-20 19:21 lancelee98 阅读(288) 评论(0) 推荐(0)
摘要:给定一个已排序的正整数数组 nums,和一个正整数 n 。从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。 示例 1: 输入: nums = [1,3], n = 阅读全文
posted @ 2020-07-13 21:35 lancelee98 阅读(138) 评论(0) 推荐(0)
摘要:一个整数区间 [a, b] ( a < b ) 代表着从 a 到 b 的所有连续整数,包括 a 和 b。 给你一组整数区间intervals,请找到一个最小的集合 S,使得 S 里的元素与区间intervals中的每一个整数区间都至少有2个元素相交。 输出这个最小集合S的大小。 示例 1: 输入: 阅读全文
posted @ 2020-07-13 21:11 lancelee98 阅读(250) 评论(0) 推荐(0)
摘要:给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n) 个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。 求满足该条件的最大数。结果返回一个表示该最大数的长度为 k 的数组。 说 阅读全文
posted @ 2020-07-13 18:06 lancelee98 阅读(385) 评论(0) 推荐(0)
摘要:有一个二维矩阵 A 其中每个元素的值为 0 或 1 。 移动是指选择任一行或列,并转换该行或列中的每一个值:将所有 0 都更改为 1,将所有 1 都更改为 0。 在做出任意次数的移动后,将该矩阵的每一行都按照二进制数来解释,矩阵的得分就是这些数字的总和。 返回尽可能高的分数。 示例: 输入:[[0, 阅读全文
posted @ 2020-07-12 13:28 lancelee98 阅读(175) 评论(0) 推荐(0)
摘要:给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。 如果可以完成上述分割,则返回 true ;否则,返回 false 。 示例 1: 输入: [1,2,3,3,4,5]输出: True解释:你可以分割出这样两 阅读全文
posted @ 2020-07-12 01:00 lancelee98 阅读(341) 评论(0) 推荐(0)
摘要:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。示例 1: 输入: [ [1,2], [2,3], [3,4], [1,3] ] 输出: 1 解释: 移除 [1,3 阅读全文
posted @ 2020-07-12 00:35 lancelee98 阅读(144) 评论(0) 推荐(0)