对即将找工作的大学生,研究生都爱刷leetcode的题目,但是刚刚接受无法适从,或是一时半会儿想不到解法,没关系,leetcode题解PDF可一带你慢慢了解思路过程。
目录3.4Addbinary615.1.5BinaryTreeLevelOr-3.5LongestPalindromicSubstring.62dertraversalil3.6RegularExpressionMatching665.1.6BinaryTreeZigzag3.7WildcardMatching67LevelOrdertraversal.963.8LongestCommonPrefix5.1.7RecoverBinarySearch3.9ValidNumber70Tree983.10Integertoroman725.1.8SameTree3.11RomantoInteger5.1.9SymmetricTree1013.12CountandSay745.1.10BalancedBinaryTree..1023.13Anagrams755.1.11FlattenBinaryTreeto3.14SimplifyPath76LinkedList1033.15LengthofLastWord775.1.12PopulatingNextRightPointersineachnodeii105第4章栈和队列7952二叉树的构建1074.1栈795.2.1ConstructBinaryTree4ValidParentheses79fromPreorderandIn4.1.2LongestvalidParenorderTraversatheses805.2.2ConstructBinaryTree4.1.3LargestRectangleinfromInorderandposHistogram82torderTraversal1084.14Evaluatereversepol-53二叉查找树109ishnotation845.3.1UniqueBinarySearch4,2队列85Trees5.3.2UniqueBinarySearch第5章树86Treesli.1105.1二叉树的遍历865.3.3ValidateBinarySearch5.1.1BinaryTreePreorderTreeTraversal865.3.4ConvertSortedarrayto5.1.2BinaryTreeInorderBinarySearchTreel12Traversal885.3.5ConvertSortedListto5.1.3BinaryTreePostorderBinarysearchtree113Traversal9054二叉树的递归1155.1.4BinaryTreeLevelOr5.4.1MinimumDepthofBidertraversalnarylree115目录5.4.2MaximumDepthofBi8.32重新实现nextpermunaryTree116tation1425.4.3PathSum117833递归.1435.44PathSumil1188.4PermutationsII1445.4.5BinaryTreeMaximum8.4.1nextpermutation...144PathSuum119842重新实现nextpermu5.4.6PopulatingNextRighttation144Pointersineachnode12084.3递归1445.4.7SumRoottoLeafNum8.5Combinations146bers122851递归146852迭代147第6章排序1238.6LetterCombinationsofaphone6.1MergeSortedArray123umber1476.2MergeTwoSortedLists12486.1递归1486.3MergekSortedLists124862迭代96.4InsertionSortList125第9章广度优先搜索1506.5Sortlist1269.1WordLadder1506.6FirstMissingPositive1279.2WordLadderil..1526.7SortColors289.3Surroundedregions154第7章查找94小结15613194.1适用场景1567.1Searchforarange131942思考的步骤.1567.2SearchInsertPosition.13294.3代码模板1577.3Searcha2DMatrix133第10章深度优先搜索162第8章暴力枚举法13510.1PalindromePartitioning..1628.1Subsets13510.2UniquePaths1658.1.1递归1350.2.1深搜1658.1.2迭代.13710.22备忘录法.1658.2Subsetsil13810.23动规166821递归1381024数学公式167822迭代.14110.3UniquePathsIl1688.3Permutations14210.3.1备忘录法1688.3.1nextpermutation14210.3.2动规.169目录10.4N-Queens16913.4Maximalrectangle19910.5N-QueensII17213.5BestTimetoBuyandSellStock10.6Restoreipaddresses17320010.7CombinationSum17413.6InterleavingString20110.8CombinationSumIl17513.7ScrambleString20310.9GenerateParentheses.17713.8MinimumPathSum20810.10Sudokusolver17813.9EditDistance21010.11WordSearch.18013.10DecodeWays.21210.12小结18113.11DistinctSubsequences21310.12.1适用场景1813.12WordBreak21410.122思考的步骤1811313WordBreakil21610.12.3代码模板183第14章图21810.12.4深拽与回溯法的区别.18414.1CloneGraph10.12.5深搜与递归的区别..184第15章细节实现题221第11章分治法18515.1ReverseInteger2211.1Pow(x,n)18515.2PalindromeNumber222qrt(x18615.3InsertInterval223第12章贪心法18715.4MergeIntervals22412.1Jumpgame18715.5MinimumWindowSubstring..22512.2JumpgameIl18815.6MultiplyStrings22712.3BestTimetobuyandsellstock19015.7SubstringwithConcatenation12.4BestTimetobuyandsellstock191ofallwords23012.5LongestSubstringWithoutre15.8Pascal,sTrianglepeatingCharacters19215.9PascalsTriangleIl23212.6ContainerwithmostWater.19315.10Spiralmatrix23315.11SpiralmatrixII234第13章动态规划19515.12ZigZagConversion23613.1Triangle19515.13DivideTwoIntegers23713.2MaximumSubarray19615.14TextJustification23813.3PalindromePartitioningII19815.15MaxPointsonaline目录第1章编程技巧在判断两个浮点数a和b是否相等时,不要用a=-b,应该判断二者之差的绝对值fabs(a-b)是否小于某个阈值,例如1e-9。
判断一个整数是否是为奇数,用x%2!=0,不要用x%2==1,因为x可能是负数用char的值作为数组下标(例如,统计字符串中每个字符出现的次数),要考虑到char可能是负数。
有的人考虑到了,先强制转型为unsignedint再用作下标,这仍然是错的。
正确的做法是,先强制转型为unsignedchar,再用作下标。
这涉及C++整型提升的规则,就不详述了。
以下是关于STL使用技巧的,很多条款来自《EffectiⅤveStL》这本书。
vector和string优先于动态分配的数组首先,在性能上,由于vector能够保证连续内存,因此一旦分配了后,它的性能跟原始数组相当其次,如果用new,意味着你要确保后面进行了delete,一旦忘记了,就会岀现BUG,且这样需要都写一行delete,代码不够短再次,声明多维数组的话,只能一个一个new,例如:int**ary=newint*[row_num];for(inti=0:i<rownum;++1)ary[i]newint[col_num]用vector的话一行代码搞定,vector<vector<int>>ary(row_num,vector<int>(col_num,0))使用reserve来避免不必要的重新分配第2章线性表这类题目考察线性表的操作,例如,数组,单链表,双向链表等。
21数组2.1.1RemoveDuplicatesfromSortedarray描述Givenasortedarray,removetheduplicatesinplacesuchthateachelementappearonlyonceandreturnthenewlengthDonotallocateextraspaceforanotherarray,youmustdothisinplacewithconstantmemoryForexample,GiveninputarrayA=[1,1,2Yourfunctionshouldreturnlength=2,andaisnow[1,2]分析无代码1/LeetCode,RemoveDuplicatesfromSortedArray/时间复杂度0(n),空间复杂度0(1)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n==oreturnointindex=0:for(inti=1:i<n:i++iif(Alindex!alidA[++index]=Alireturnindex12.1数组代码2//LeetCode,RemoveDuplicatesfromSortedArray//使用STL,时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[,intn)treturndistance(A,unique(A,An))代码3/LeetCode,RemoveDuplicatesfromSortedArray/使用STL,时间复杂度0(n),空间复杂度0(1)lassSolutionfublicintremoveDuplicates(intA[],intn)treturnremoveDuplicates(A,A+n,A)-A;template<typenameInIt,typenameoutit>OutItremoveDuplicates(InItfirst,InItlast,OutItoutput)thile(firstlast)i*output++=*firstfirstupper_bound(first,last,*firstreturnoutput相关题目RemoveduplicatesfromSortedArrayIl,见§2.1.22.1.2RemoveDuplicatesfromSortedArrayII描述Followupfor"RemoveDuplicates"Whatifduplicatesareallowedatmosttwice?Forexample,Givensortedarraya=[1,1,1,2,2,3]Yourfunctionshouldreturnlength=5,andAisnow[1,1,2,2,3分析加一个变量记录一下元素出现的次数即可。
这题因为是已经排序的数组,所以一个变量即可解决。
如果是没有排序的数组,则需要引入一个hashmap来记录出现次数4第2章线性表代码1//LeetCode,RemoveDuplicatesfromSortedArrayII/时间复杂度0(n),空间复杂度0(1)//qauthorhex108(https://github.com/hex108)classSolutiontublicintremoveDuplicates(intA[],intn)tlf(n<=2returnnintindex=2for(inti=2:in:1++)if(all]!Alindex-2])ALindex++]=Ali]returnindex;代码2下面是一个更简洁的版本。
上面的代码略长,不过扩展性好一些,例如将occur<2改为ocur<3,就变成了允许重复最多3次。
//LeetCode,RemoveDuplicatesfromSortedArrayII//@author虞航仲(http://weibo.com/u/1666779725)//时间复杂度0(n),空间复杂度0(1)classSolutionipublicintremoveDuplicates(intA[],intn)tmtindex=ofor(intif(i>0&&i<1&&A[i]==A[i-1]&&A[i]==A[i+1])continueAlindex++]=Alireturnindex;相关题目RemoveDuplicatesfromSortedArray,见§2.1.12.1.3SearchinRotatedSortedArray描述Supposeasortedarrayisrotatedatsomepivotunknowntoyoubeforehand
2024/12/7 0:08:16 1.03MB leetcode题解
1
一、单项选择题ABCBDACBDC二、简答题1.链式存储结构。
原因:线性表在处理过程中长度会动态地变化,说明对线性表的操作使以增加和删除数据为主。
而顺序存储结构在增加和删除数据的时候需要整体移动数据的位置,比较复杂,所以宜采用链式存储结构。
2.最少有73个,最多有235个。
3.(1)矩阵中不为0的元素的二分之一。
(2)矩阵中对应该顶点的行或列中非零元素的个数。
(3)矩阵中i对应的行和j对应的列的交点元素是否为0。
为0的话就不存在边,不为0则存在边。
4.①折半插入排序比较次数取决于每一趟的折半次数,而折半次数只取决于元素个数而与序列的初始状态无关。
②当排序序列元素个数较小时。
三、综合题1.交换双向链表中某个指定结点与其直接后继结点的位置。
2.三个。
如下图 6 2 3 4 5 5 1 1 1 1 1 1 1 1 1 1 3.前序:ABDEGCFH后序:DGEBHFCA4.深度优先:ACBDE广度优先:ACEBD四、算法设计题
2024/11/17 4:23:51 141.94MB 考研真题
1
前言第1章 绪论第2章 算法复杂度与问题的下界2.1 算法的时间复杂度2.2 最好、平均和最坏情况的算法分析2.3 问题的下界2.4 排序的最坏情况下界2.5 堆排序:在最坏情况下最优的排序算法2.6 排序的平均情况下界2.7 通过神谕改进下界2.8 通过问题转换求下界2.9 注释与参考2.10 进一步的阅读资料习题第3章 贪心法3.1 生成最小生成树的Kruka1算法3.2 生成最小生成树的Prim算法3.3 单源最短路径问题3.4 二路归并问题3.5 用贪心法解决最小圈基问题3.6 用贪心法解决2终端一对多问题3.7 用贪心法解决1螺旋多边形最小合作警卫问题3.8 实验结果3.9 注释与参考3.10 进一步的阅读资料习题第4章 分治策略4.1 求2维极大点问题4.2 最近点对问题4.3 凸包问题4.4 用分冶策略构造Voronoi图4.5 voronoi图的应用4.6 快速傅里叶变换4.7 实验结果4.8 注释与参考4.9 进一步的阅读资料习题第5章 树搜索策略5.1 广度优先搜索5.2 深度优先搜索5.3 爬山法5.4 最佳优先搜素策略5.5 分支限界策略5.6 用分支限界策略解决人员分配问题5.7 用分支限界策略解决旅行商优化问题5.8 用分支限界策略解决O,1背包问题5.9 用分支限界方法解决作业调度问题5.10 A*算法5.11 用特殊的A*算法解决通道路线问题5.12 用A*算法解决线性分块编码译码问题5.13 实验结果5.14 注释与参考5.15 进一步的阅读资料习题第6章 剪枝搜索方法6.1 方法概述6.2 选择问题6.3 两变量线性规划6.4 圆心问题6.5 实验结果6.6 注释与参考6.7 进一步的闷读瓷料习题弟7章 动态规划方法7.1 资源配置问题7.2 最长公共f序列问题7.3 2序列比对问题7.4 RNA最大碱基对匹配问题7.5 0,1背包问题7.6 最优二卫树问题7.7 树的带权完垒支配问题7.8 树的带权单步图边的搜索问题7.9 用动态规划方法解决1螺旋多边形m守卫路由问题7.10 实验结果7.11 注释与参考7.12 进一步的阅读资料习题第8章 NP完全性理论8.1 关十NP完垒性理论的非形式化讨论8.2 判定问题8.3 可满足性问题8.4 NP问题8.5 库克定理8.6 NP完全问题8.7 证明NP完全性的例子8.8 2可满足性问题8.9 注释与参考8.10 进一步的阅读资料习题第9章 近似算法9.1 顶点覆盖问题的近似算珐9.2 欧几里得旅行商问题的近似算法9.3 特殊瓶颈旅行商问题的近似算珐9.4 特殊瓶颈加权K供应商问题的近似算法9.5 装箱问题的近似算法9.6 直线m中心问题的最优近似算法9.7 多序列比对问题的近似算珐9.8 对换排序问题的2近似算法9.9 多项式时间近似方案9.10 最小路径代价生成树问题的2近似算法9.11 最小路径代价生成树问题的Pns9.12 NP0完全性9.13 注释与参考9.14 进一步的阅读资料习题第10章 分摊分析10.1 使用势能函数的例子10.2 斜堆的分摊分析10.3 Av1树的分摊分析10.4 自组织顺序检索启发式方法的分摊分析10.5 配对堆及其分摊分析10.6 不相交集合并算法的分摊分析10.7 一些磁盘调度算法的分摊分析10.8 实验结果10.9 注释与参考10.10 进步的阅读资料习题第11章 随机算法11.1 解决最近点对问题的随机算珐11.2 随机最近点对问题的平均性能11.3 素数测试的随机算法11.4 模式匹配的随机算法11.5 交互证明的随机算法11.6 最小生成树的随机线性时间算法11.7 注释与参考11.8 进一步的阅读资料习题第12章 在线算法12.1 用贪心法解决在线欧几里得生成树问题12.2 在线K服务员问题及解决定义在平面树上该问题的贪心算法12.3 基于平衡策略的在线穿越障碍算法12.4 用补偿策略求解在线二分匹配问题12.5 用适中策略解决在线m台机器调度问题12.6 基于排除策略的三个计算几何问题的在线算法12.7 基于随机策略的在线生成树算法12.8 注释与参考12.
2024/11/10 12:04:19 12.76MB 算法
1
C语言实现二叉树的创建、插入、删除、遍历(先序、中序、后续、深度优先、广度优先)、计算度为0,1,2的节点个数。
包括排序二叉树的实现
2024/9/19 22:29:52 765KB 二叉树
1
DS_ALGO数据结构和算法数据结构:数组堆栈s列链表哈希表树木图表排序算法气泡排序选择排序插入排序合并排序快速排序桶分类计数排序堆排序基数排序搜索算法线性搜寻二元搜寻插值搜索数组中的第二个Max在矩阵上进行二进制搜索数数X的数组如果阵列顺时针旋转,则查找最小值反转对找出a,b使a+b=X合并后找到两个排序数组的中位数图算法图表示广度优先搜索深度优先搜索拓扑排序未加权图的最小路径有向无环图的最短路径Dijkstra的算法FloydWarshall算法递归河内塔N皇后问题老鼠迷宫问题m着色问题特殊算法KarpRabin算法唐津乘法贪婪算法小背包霍夫曼码动态编程切杆编辑距离自动换行0-1背包最低硬币子集总和问题最低成本路径近似问题最小顶点覆盖
2024/7/8 3:57:22 178KB c algorithm algorithms string
1
这是用邻接链表作存储结构的图类源代码,下面是图类的声明部分:structArcNode//弧节点结构{intadjvex;ArcNode*nextarc;};structVexNode//顶点结构{intvexdata;ArcNode*firstarc;};//邻接链表图类的声明。
classGraph{private:staticstringstr;bool*visited;//是否访问标志VexNode*adjlist;//邻接链表数组intn;//已有顶点个数intmax;//可容纳的最大顶点个数voiddfs0(intv0,voidvisit(int&v));voidbfs0(intv0,voidvisit(int&v));public:Graph(intl);//建立一个最大顶点数为l的空图Graph(VexNodeadjl[],intl);//构造一个由adj1表示的顶点个数为l的邻接链表对象Graph(intvex[],intarc[],intn);//以vex[]为顶点集,arc[]表示的邻接矩阵建立图voidinstVex(intdata);//插入顶点voidinstArc(intv1,intv2);//插入边stringdfs(intv0,voidvisit(int&v));//深度优先遍历stringbfs(intv0,voidvisit(int&v));//广度优先遍历staticvoidfunc1(int&v);//遍历时执行的函数staticvoidfunc2(int&v);//遍历时执行的函数staticstringinttostr(intv);};
2024/6/29 17:13:18 13KB 邻接链表
1
《C语言实例解析精粹》作者:曹衍龙、林瑞仲、徐慧,出版社:人民邮电出版社,ISBN:9787115163073,高清影印版,本资源带有PDF书签,方便读者朋友阅读。
本资源附带全书源代码。
内容简介:  本书主要讲解c语言编程涉及的各类常见实例,共分8篇,以“基础篇→数据结构篇→数值计算与趣味数学篇→图形篇→系统篇→常见试题解答篇→游戏篇→综合实例篇”具体展开,共汇集220个实例,基本涵盖了目前c语言编程的各个方面。
  书中以具体的实例为线索,特别注重对例题的分析、对知识点的归纳、对求解方法的引申,同时程序代码中融会了c语言的各种编程技巧,条理清晰,以方便读者举一反三,开发出符合特定要求的程序。
本书的配套光盘中涵盖了书中所有实例的源代码,以方便读者学习和查阅。
  本书适合具有初步c语言基础的读者阅读,可作为高校相关专业的辅导教材,也可作为c语言使用者进行程序设计的实例参考手册。
目录:第一部分 基础篇 实例1 第一个c程序  实例2 运行多个源文件  实例3 求整数之积  实例4 比较实数大小  实例5 字符的输出  实例6 显示变量所占字节数  实例7 自增/自减运算  实例8 数列求和  实例9 乘法口诀表  实例10 猜数字游戏  实例11 模拟atm(自动柜员机)界面  实例12 用一维数组统计学生成绩  实例13 用二维数组实现矩阵转置  实例14 求解二维数组的最大/最小元素  实例15 利用数组求前n个质数  实例16 编制万年历  实例17 对数组元素排序  实例18 任意进制数的转换  实例19 判断回文数 实例20 求数组前n个元素之和  实例21 求解钢材切割的最佳订单  实例22 通过指针比较整数大小  实例23 指向数组的指针  实例24 寻找指定元素的指针  实例25 寻找相同元素的指针  实例26 阿拉伯数字转换为罗马数字  实例27 字符替换  实例28 从键盘读入实数  实例29 字符行排版  实例30 字符排列  实例31 判断字符串是否回文  实例32 通讯录的输入输出  实例33 扑克牌的结构表示  实例34 用“结构”统计学生成绩  实例35 报数游戏  实例36 模拟社会关系  实例37 统计文件的字符数  实例38 同时显示两个文件的内容   实例39 简单的文本编辑器  实例40 文件的字数统计程序  实例41 学生成绩管理程序 第二部分 数据结构篇 实例42 插入排序 实例43 希尔排序 实例44 冒泡排序  实例45 快速排序  实例46 选择排序  实例47 堆排序  实例48 归并排序  实例49 基数排序  实例50 二叉搜索树操作  实例51 二项式系数递归  实例52 背包问题  实例53 顺序表插入和除  实例54 链表操作(1)  实例55 链表操作(2)  实例56 单链表就地逆置  实例57 运动会分数统计  实例58 双链表  实例59 约瑟夫环  实例60 记录个人资料  实例61 二叉树遍历  实例62 浮点数转换为字符串  实例63 汉诺塔问题  实例64 哈夫曼编码  实例65 图的深度优先遍历  实例66 图的广度优先遍历  实例67 求解最优交通路径  实例68 八皇后问题  实例69 骑士巡游  实例70 用栈设置密码  实例71 魔王语言翻译  实例72 火车车厢重排  实例73 队列实例  实例74 k阶斐波那契序列 第三部分 数值计算与趣味数学篇 实例75 绘制余弦曲线和直线的叠加  实例76 计算高次方数的尾数  实例77 打鱼还是晒网  实例78 怎样存钱以获取最大利息  实例79 阿姆斯特朗数  实例80 亲密数  实例81 自守数  实例82 具有abcd=(ab+cd)2性质的数  实例83 验证歌德巴赫猜想  实例84 素数幻方  实例85 百钱百鸡问题  实例86 爱因斯坦的数学题  实例87 三色球问题  实例88 马克思手稿中的数学题  实例89 配对新郎和新娘  实例90 约瑟夫问题  实例91 邮票组合  实例92 分糖果  实例93 波瓦松的分酒趣题  实例94 求π的近似值  实例95 奇数平方的有趣性质  实例96 角谷猜想  实例97 四方定理  实例98 卡布列克常数  实例9
1
人工智能有N个传教士和N个野人要过河用C语言实现野人过河完整源程序,采用的是递归深度优先搜索,可以输出所有可能的方式.
2024/6/6 21:57:20 42KB 野人 传教士 过河
1
很多涉及图上操作的算法都是以图的遍历操作为基础的。
试写一个程序,演示无向图的遍历操作。
以邻接表为存储结构,实现连通无向图的深度优先和广度优先遍历。
以用户指定的结点为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。
[测试数据]由学生依据软件工程的测试技术自己确定。
注意测试边界数据,如单个结点。
[实现提示]设图的结点不超过30个,每个结点用一个编号表示(如果一个图有n个结点,则它们的编号分别为1,2,…,n)。
通过输入图的全部边输入一个图,每个边为一个数对,可以对边的输入顺序作出某种限制。
注意,生成树的边是有向边,端点顺序不能颠倒。
2024/5/26 13:25:36 120KB BFS DFS
1
1.写了一个自己的腐蚀算法。
2.通过图论的连通分量的判断来去除噪点(深度优先搜索)3.水平和垂直切割。
自己写的根据直线的粗细来切割线段
2024/5/25 21:34:55 3.7MB 黑白图像去噪
1
共 62 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡