![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
习题
qq_43530773
win自动更新导致资料没了,这里作为备份用
展开
-
【编程题】LeetCode.0031 下一个排列
题目描述:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。(其实就是next_permutation()函数的原理UwU~~)示例:示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]原创 2021-06-27 23:53:24 · 148 阅读 · 1 评论 -
【编程题】LeetCode.0030 串联所有单词的子串
vector<int> findSubstring(string s, vector<string>& words) { //当单词长度 int word_size = words[0].size(); vector<int> ans; //总长度不足可返回 if(s.size()<words.size()*word_size) { r原创 2021-06-22 00:23:04 · 191 阅读 · 1 评论 -
【编程题】LeetCode.0029 两数相除
题目描述:给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例:示例 1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333..) =原创 2021-06-19 19:25:18 · 150 阅读 · 0 评论 -
关于常见字符串匹配算法——KMP算法的个人理解与解释
本文是对LeetCode上官方对KMP算法的解释的个人理解与消化,对应链接:https://leetcode-cn.com/problems/implement-strstr/.前言我愿称LeetCode.0028为算法题里的扫地憎题目描述:实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。当 needle 是空字符串时,我们应当返回原创 2021-06-16 20:04:22 · 246 阅读 · 0 评论 -
【编程题】LeetCode.0025 K 个一组翻转链表
题目描述:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:1、你可以设计一个只使用常数额外空间的算法来解决此问题吗?2、你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例:示例1:示例2:示例 1:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]示例 2:输入:head = [1,2,3,4原创 2021-06-14 23:46:23 · 154 阅读 · 3 评论 -
【编程题】LeetCode.0023 合并K个升序链表
题目描述:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = [原创 2021-06-13 23:30:11 · 173 阅读 · 1 评论 -
【编程题】LeetCode.0022 括号生成
题目描述:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。示例:示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]解析:向下回溯,注意出入栈的顺序。其中,这里用一个数n表示出入栈的状态。由于后括号 ‘)’都在前括号 ‘(’ 之后插入,因此,如果以入栈视为+1,出栈为-1;因此n>=0,一个完整的括号其结果为n==0/原创 2021-06-11 18:19:48 · 107 阅读 · 0 评论 -
【编程题】LeetCode.0019 删除链表的倒数第 N 个结点
题目描述:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例:示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]解析:这题实际上算比较简单的,主要是思考如何标记倒数第n个节点的前序节点。自然,可以先遍历一次获取总长度然后再靠一轮循环获取,不过这显然不合题目原创 2021-06-09 23:37:11 · 141 阅读 · 4 评论 -
【编程题】LeetCode.0017 电话号码的字母组合
题目描述:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:示例 1:输入:digits = "23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]示例 2:输入:digits = ""输出:[]示例 3:输入:digits = "2"输出:["a","b","c"]解析:观察规律,前K个字符的排列组原创 2021-06-08 19:48:33 · 181 阅读 · 0 评论 -
【编程题】LeetCode.0015 三数之和
题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]解析:之前用hash_map邪道做过一道两数之和,这里也同原创 2021-06-07 18:55:26 · 144 阅读 · 0 评论 -
【编程题】翻转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。示例:输入:{1,2,3}返回值:{3,2,1}解析:如果指针操作不熟悉可以键一个栈存储。现在先放下代码:ListNode* ReverseList(ListNode* pHead) { //是否为空指针或长度为1 //若是,直接返回 if(pHead==nullptr||pHead->next==nullptr) return pHead;原创 2021-06-07 13:23:19 · 252 阅读 · 0 评论 -
【编程题】 LeetCode.0011 盛最多水的容器
题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。(木桶理论hh)示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例原创 2021-06-06 15:15:16 · 130 阅读 · 0 评论 -
【编程题】LeetCode.0010 正则表达式匹配
题目描述:给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例:示例 1:输入:s = "aa" p = "a"输出:false解释:"a" 无法匹配 "aa" 整个字符串。示例 2:输入:s = "aa" p = "a*"输出:true解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面原创 2021-06-05 20:34:11 · 124 阅读 · 0 评论 -
【编程题】LeetCode.0007 整数翻转
题目描述:给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例:示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0这题很简单,解决方法很多,基本步骤为:1、判断正负;2、翻转整原创 2021-06-04 12:31:51 · 107 阅读 · 0 评论 -
【编程题】LeetCode.0005 最长回文子串
题目描述:给你一个字符串 s,找到 s 中最长的回文子串。示例:示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”解析:这题从直观观感来看,似乎跟之前一题求区间最大值类似,似乎可以用滑动窗口可解,当然这可行,不过效率不高。分析回文定义,如果一个字符串s[l][r]是回文字符串,则它的子字符串s[原创 2021-06-01 16:06:51 · 157 阅读 · 0 评论 -
【编程题】LeetCode.0004寻找两个正序数组的中位数
题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例:示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:nums1转载 2021-06-01 15:13:01 · 71 阅读 · 0 评论 -
c++map与hash_map以及例题
mapmap底层由红黑树实现,不同的操作的时间复杂度为:插入: O(logN)查看:O(logN)删除:O(logN)hash_maphash_map底层由哈希表实现,不同的操作的时间复杂度为:插入:O(1),最坏情况O(N)查看:O(1),最坏情况O(N)删除:O(1),最坏情况O(N)两者的区别可参考:https://blog.csdn.net/weixin_42767099/article/details/82874555例题:LeetCode0001,两数之和题目描述:给定原创 2021-05-26 20:36:51 · 248 阅读 · 0 评论 -
【编程题】LeetCode.0003 无重复字符的最长子串
题目描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例:示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke”原创 2021-05-29 09:33:59 · 88 阅读 · 0 评论 -
【编程题】 推箱子
题目描述:大家一定玩过“推箱子”这个经典的游戏。具体规则就是在一个N*M的地图上,有1个玩家、1个箱子、1个目的地以及若干障碍,其余是空地。玩家可以往上下左右4个方向移动,但是不能移动出地图或者移动到障碍里去。如果往这个方向移动推到了箱子,箱子也会按这个方向移动一格,当然,箱子也不能被推出地图或推到障碍里。当箱子被推到目的地以后,游戏目标达成。现在告诉你游戏开始是初始的地图布局,请你求出玩家最少需要移动多少步才能够将游戏目标达成。输入描述:每个测试输入包含1个测试用例第一行输入两个数字N,M表示地图原创 2021-05-29 11:38:11 · 635 阅读 · 1 评论 -
【编程题】重新分配
题目描述:有n个房间,现在i号房间里的人需要被重新分配,分配的规则是这样的:先让i号房间里的人全都出来,接下来按照 i+1, i+2, i+3, … 的顺序依此往这些房间里放一个人,n号房间的的下一个房间是1号房间,直到所有的人都被重新分配。现在告诉你分配完后每个房间的人数以及最后一个人被分配的房间号x,你需要求出分配前每个房间的人数。数据保证一定有解,若有多解输出任意一个解。输入描述:第一行两个整数n, x (2<=n<=10^5, 1<=x<=n),代表房间房间数量以及最原创 2021-05-15 01:18:42 · 615 阅读 · 0 评论 -
【编程题】求数组中的所有子集
题目叙述:给出一个含有不重复元素的数组,列出它的所有子集。输入描述:共两行输入:第一行一个整数n,示意数组的元素个数。第二行,数组的各元素。输出描述:按集合的形式,每行输出其中一个子集,不要求顺序。示例:输入:31 2 3输出:[3][1][2][1,2,3][1,3][2,3][1,2][]本题目参考:https://blog.csdn.net/u012118523/article/details/24884803方法一:通过二叉树向下回溯原数组中的每原创 2021-05-02 16:16:25 · 1178 阅读 · 0 评论 -
[编程题]字母交换
题目描述:字符串S由小写字母构成,长度为n。定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换。询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同?输入描述:第一行为一个字符串S与一个非负整数m。(1 <= |S| <= 1000, 1 <= m <= 1000000)输出描述:一个非负整数,表示操作之后,连续最长的相同字母数量。示例:输入abcbaa 2输出2说明使2个字母a连续出现,至少需要3次操作。即把第1个位置上的a移动原创 2021-04-27 23:18:29 · 1286 阅读 · 1 评论 -
【编程题】判断一个多边形是否为凸多边形
题目:顺序输入点的坐标,判断按这些点顺序连接起来的多边形是否为凸多边形还是凹多边形输入描述:输入包括两行;第一行是一个整数n,n>=3,作为提示输入的顶点数量第二行为2*n个整数,为各点的(x,y)输出描述:若为凸多边形,则输出为“这是凸多边形”若不是凸多边形,则输出为“这不是凸多边形”解析:对于凸多边形有:每个内角都为小于180度的角,没有大于180度的角。解法1:对于一个凸多边形,其每个顶点较小的角的和必为其边长减2再乘以180度:(n-2)*180对于一个凸多边形原创 2021-04-22 15:49:32 · 4506 阅读 · 1 评论 -
[编程题]手串
题目描述:作为一个手串艺人,有金主向你订购了一条包含n个杂色串珠的手串——每个串珠要么无色,要么涂了若干种颜色。为了使手串的色彩看起来不那么单调,金主要求,手串上的任意一种颜色(不包含无色),在任意连续的m个串珠里至多出现一次(注意这里手串是一个环形)。手串上的颜色一共有c种。现在按顺时针序告诉你n个串珠的手串上,每个串珠用所包含的颜色分别有哪些。请你判断该手串上有多少种颜色不符合要求。即询问有多少种颜色在任意连续m个串珠中出现了至少两次。输入描述:第一行输入n,m,c三个数,用空格隔开。(1 <原创 2021-04-17 23:03:54 · 173 阅读 · 0 评论 -
[编程题]用户喜好
题目:为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k。因为一些特殊的原因,不会出现一个查询的用户区间完全覆盖另一个查询的用户区间(不存在L1<=L2<=R2<=R1)。输入描述:输入:第1行为n代表用户的个数 第2行为n个整数,第i个代表用户标号为i的用户对某类文章的喜好度第3行为一原创 2021-04-17 21:55:09 · 246 阅读 · 0 评论 -
【编程题】产品经理
产品经理(PM)有很多好的idea,而这些idea需要程序员实现。现在有N个PM,在某个时间会想出一个 idea,每个 idea 有提出时间、所需时间和优先等级。对于一个PM来说,最想实现的idea首先考虑优先等级高的,相同的情况下优先所需时间最小的,还相同的情况下选择最早想出的,没有 PM 会在同一时刻提出两个 idea。同时有M个程序员,每个程序员空闲的时候就会查看每个PM尚未执行并且最想完成的一个idea,然后从中挑选出所需时间最小的一个idea独立实现,如果所需时间相同则选择PM序号最小的。直到完原创 2021-04-15 10:30:55 · 356 阅读 · 1 评论 -
[编程题]会话列表
题目:小云正在参与开发一个即时聊天工具,他负责其中的会话列表部分。会话列表为显示为一个从上到下的多行控件,其中每一行表示一个会话,每一个会话都可以以一个唯一正整数id表示。当用户在一个会话中发送或接收信息时,如果该会话已经在会话列表中,则会从原来的位置移到列表的最上方;如果没有在会话列表中,则在会话列表最上方插入该会话。小云在现在要做的工作是测试,他会先把会话列表清空等待接收信息。当接收完大量来自不同会话的信息后,就输出当前的会话列表,以检查其中是否有bug。输入描述:输入的第一行为一个正整数T原创 2021-03-26 03:29:10 · 131 阅读 · 0 评论 -
[编程题]糖果谜题
小明是幼儿园的一名老师。某天幼儿园园长给小朋友们每人发一颗糖果,小朋友们拿到后发现有一些同学拿到的糖果颜色和自己相同,有一些同学糖果颜色和自己不同。假定每个小朋友只知道有多少同学和自己拿到了相同颜色的糖果。上课后,有一部分小朋友兴奋的把这一结果告诉小明老师,并让小明老师猜一猜,最少有多少同学拿到了糖果。例如有三个小朋友告诉小明老师这一结果如下:其中第一个小朋友发现有1人和自己糖果颜色一样,第二个小朋友也发现有1人和自己糖果颜色一样,第三个小朋友发现有3人和自己糖果颜色一样。第一二个小朋友可互相认为原创 2021-03-26 02:32:24 · 262 阅读 · 0 评论 -
【编程题】蛇形环
题目:输入非负整数M,N;输出一个M行N列的矩阵;蛇形环,内容为A-Z;示例:例1:输入:3 2输出:A BF CE D例2:输入:5 6输出:A B C D E FR S T U V GQ B C D W HP A Z Y X IO N M L K J解析:原创 2021-03-25 23:39:33 · 203 阅读 · 0 评论 -
[编程题]幸运N串
小A很喜欢字母N,他认为连续的N串是他的幸运串。有一天小A看到了一个全部由大写字母组成的字符串,他被允许改变最多2个大写字母(也允许不改变或者只改变1个大写字母),使得字符串中所包含的最长的连续的N串的长度最长。你能帮助他吗?输入描述:输入的第一行是一个正整数T(0 < T <= 20),表示有T组测试数据。对于每一个测试数据包含一行大写字符串S(0 < |S| <= 50000,|S|表示字符串长度)。数据范围:20%的数据中,字符串长度不超过100;70%的数据中原创 2021-03-24 23:32:08 · 263 阅读 · 0 评论 -
[编程题]水平线
题目:伞屉国是一个以太阳能为主要发电手段的国家,因此他们国家中有着非常多的太阳能基站,链接着的基站会组合成一个发电集群。但是不幸的是伞屉国不时会遭遇滔天的洪水,当洪水淹没基站时,基站只能停止发电,同时被迫断开与相邻基站的链接。你作为伞屉国的洪水观察员,有着这样的任务:在洪水到来时,计算出发电集群被洪水淹没后被拆分成了多少个集群。由于远古的宇宙战争的原因,伞屉文明是一个二维世界里的文明,所以你可以这样理解发电基站的位置与他们的链接关系:给你一个一维数组a,长度为n,表示了n个基站的位置高度信息。数组的第i原创 2021-03-23 04:34:30 · 412 阅读 · 0 评论 -
[编程题]二进制计数
题目:小A刚学了二进制,他十分激动。为了确定他的确掌握了二进制,你给他出了这样一道题目:给定N个非负整数,将这N个数字按照二进制下1的个数分类,二进制下1的个数相同的数字属于同一类。求最后一共有几类数字?输入描述:输入的第一行是一个正整数T(0<T<=10),表示样例个数。对于每一个样例,第一行是一个正整数N(0<N<=100),表示有多少个数字。接下来一行是N个由空格分隔的非负整数,大小不超过2^31 – 1。输出描述:对于每一组样例,输出一个正整数,表示输入的数字一共原创 2021-03-22 04:12:35 · 439 阅读 · 0 评论 -
【编程题】数组的 partition 调整
题目:给定一个有序数组 arr,调整 arr 使得这个数组的左半部分没有重复元素且升序,而不用保证右部分是否有序。例如:arr = [1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 8, 9]调整之后 arr=[1, 2, 3, 4, 5, 6, 7, 8, 9, …]要求:时间复杂度为 O(n),空间复杂度为 O (1)输入描述:第一行一个整数 N,表示数组长度,接下来一行 N 个整数,表示数组内元素输出描述:输出 N 个整数为答案数组解析:要求原创 2021-03-22 03:32:02 · 275 阅读 · 0 评论 -
[编程题]区间中的最大值
题目:给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序列 [6 2 1]则根据上述公式, 可得到所有可以选定各个区间的计算值:[6] = 6 * 6 = 36;[2] = 2 * 2 = 4;[1] = 1 * 1 = 1;[6,2] = 2 * 8 = 16;[2,1] = 1 * 3 = 3;[6, 2, 1] = 1 * 9 = 9;从上述原创 2021-03-20 22:37:22 · 2350 阅读 · 0 评论 -
[编程题]“最大的”点的集合
题目:P为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标轴范围在[0, 1e9) 内)如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。输入描述:第一行输入点集的个数 N, 接下来 N 行,每行两个数字代表点的 X 轴和 Y 轴。对于 50%的数据, 1 <= N <= 10000原创 2021-03-19 16:44:03 · 502 阅读 · 0 评论 -
[编程题]机器人跳跃问题
机器人正在玩一个古老的基于DOS的游戏。游戏中有N+1座建筑——从0到N编号,从左到右排列。编号为0的建筑高度为0个单位,编号为i的建筑的高度为H(i)个单位。起初, 机器人在编号为0的建筑处。每一步,它跳到下一个(右边)建筑。假设机器人在第k个建筑,且它现在的能量值是E, 下一步它将跳到第个k+1建筑。它将会得到或者失去正比于与H(k+1)与E之差的能量。如果 H(k+1) > E 那么机器人就失去 H(k+1) - E 的能量值,否则它将得到 E - H(k+1) 的能量值。游戏目标是到达第个原创 2021-03-16 20:42:07 · 585 阅读 · 0 评论 -
【编程题】找零
Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N (0 < N \le 1024)N(0<N≤1024)的商品,请问最少他会收到多少硬币?输入描述:一行,包含一个数N。输出描述:一行,包含一个数,表示最少收到的硬币数。示例:输入200输出17说明花200,需要找零824块,找12个64元硬币,3个16元硬币,2个4元硬币即可。备注:对于100%的数据,N (0 < N \l原创 2021-03-14 22:31:52 · 348 阅读 · 0 评论 -
[编程题]关于旅行商问题的各类解法(待完成)
正文:旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市仅一次并回到起始城市的最短回路。它是组合优化中的一个NP难问题,在运筹学和理论计算机科学中非常重要。这一问题中,将城市视为节点,将城市间的距离视为边,则一个有n个节点的旅行商问题可视为n*n的邻接矩阵。例:题目要求从其中一个节点出发,遍历所有且只读取一次节点,并最终回到最初出发节点上。分析:TSP问题显然是NP问题(关于NP问题,可以原创 2021-03-13 01:10:29 · 1641 阅读 · 0 评论 -
[编程题]特征提取
小明是一名算法工程师,同时也是一名铲屎官。某天,他突发奇想,想从猫咪的视频里挖掘一些猫咪的运动信息。为了提取运动信息,他需要从视频的每一帧提取“猫咪特征”。一个猫咪特征是一个两维的vector<x, y>。如果x_1=x_2 and y_1=y_2,那么这俩是同一个特征。因此,如果喵咪特征连续一致,可以认为喵咪在运动。也就是说,如果特征<a, b>在持续帧里出现,那么它将构成特征运动。比如,特征<a, b>在第2/3/4/7/8帧出现,那么该特征将形成两个特征运动2-3原创 2021-03-07 16:59:55 · 245 阅读 · 0 评论 -
[编程题]雀魂启动!
小包最近迷上了一款叫做雀魂的麻将游戏,但是这个游戏规则太复杂,小包玩了几个月了还是输多赢少。于是生气的小包根据游戏简化了一下规则发明了一种新的麻将,只留下一种花色,并且去除了一些特殊和牌方式(例如七对子等),具体的规则如下:总共有36张牌,每张牌是1~9。每个数字4张牌。你手里有其中的14张牌,如果这14张牌满足如下条件,即算作和牌14张牌中有2张相同数字的牌,称为雀头。除去上述2张牌,剩下12张牌可以组成4个顺子或刻子。顺子的意思是递增的连续3个数字牌(例如234,567等),刻子的意思是相同数原创 2021-03-06 02:32:18 · 345 阅读 · 0 评论