leetcode每日一题
5.13号开始,希望秋招能找到好工作,太难了🥹🥹🥹
(预计先刷三个月)
一只雯哈哈
记录的意义在于反复 review 和 re-think !
展开
-
6.4—栈
栈(Stack)又名堆栈,它是一种重要的数据结构。从数据结构角度看,栈也是线性表,其特殊性在于栈的基本操作是线性表操作的子集,它是操作受限的线性表,因此,可称为限定性的数据结构。限定它仅在表尾进行插入或删除操作。表尾称为栈顶,相应地,表头称为栈底。栈的基本操作除了在栈顶进行插入和删除外,还有栈的初始化,判空以及取栈顶元素等。栈是支持「递归」的重要的数据结构,很多程序都需要这个看起来简单,但是也发挥着巨大作用的数据结构。以下是栈的相关练习,可以帮助你进一步了解栈,快来试试吧!原创 2023-06-04 14:26:15 · 594 阅读 · 0 评论 -
6.4—位运算
位操作(Bit Manipulation)是程序设计中对位模式或二进制数的一元和二元操作。在许多古老的微处理器上,位运算比加减运算略快,通常位运算比乘除法运算要快很多。在现代编程语言中,情况并非如此,很多编程语言的解释器都会基本的运算进行了优化,因此我们在实际开发中可以不必做一些编译器已经帮我们做好的优化,而就写出代码本身所要表现的意思。位运算的问题,很多都很有技巧性,大家需要掌握一定的位运算的应用,达到融会贯通的目的。1 or 1 = 1;1 or 0 = 1;原创 2023-06-04 13:28:03 · 107 阅读 · 0 评论 -
6.3—双指针
双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说,相向移动同向移动双指针算法通常不难,双指针算法是基于暴力解法的优化,它们是很好的学习算法的入门问题,让我们开始学习双指针算法之旅吧。原创 2023-06-03 21:45:27 · 41 阅读 · 0 评论 -
6.3—矩阵
【代码】6.3—矩阵。原创 2023-06-03 21:17:23 · 31 阅读 · 0 评论 -
6.1—二分查找
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法,可以在数据规模的对数时间复杂度内完成查找。二分查找可以应用于数组,是因为数组具有有随机访问的特点,并且数组是有序的。二分查找体现的数学思想是「减而治之」,可以通过当前看到的中间元素的特点推测它两侧元素的性质,以达到缩减问题规模的效果。二分查找问题也是面试中经常考到的问题,虽然它的思想很简单,但写好二分查找算法并不是一件容易的事情。原创 2023-06-03 14:15:57 · 59 阅读 · 0 评论 -
6.1—树
树是一种抽象数据类型(ADT)或是实现这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。它是由 n(n>0) 个有限节点组成一个具有层次关系的集合。把它叫做「树」是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。原创 2023-06-01 14:20:10 · 37 阅读 · 0 评论 -
5.31—贪心算法
贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择,就能得到问题的答案。贪心算法需要充分挖掘题目中条件,没有固定的模式,解决有贪心算法需要一定的直觉和经验。贪心算法不是对所有问题都能得到整体最优解。能使用贪心算法解决的问题具有「贪心选择性质」。「贪心选择性质」严格意义上需要数学证明。能使用贪心算法解决的问题必须具备「无后效性」,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。原创 2023-06-01 13:42:35 · 214 阅读 · 0 评论 -
5.25—广度优先搜索
广度优先搜索算法(Breadth-First Search,缩写为 BFS),又称为宽度优先搜索,是一种图形搜索算法。简单的说,BFS 是从根结点开始,沿着树的宽度遍历树的结点。如果所有结点均被访问,则算法中止。原创 2023-05-31 16:36:10 · 62 阅读 · 0 评论 -
5.24—排序
排序算法由于它的任务简单,但是解决问题的思想非常经典,适合入门,因此在很多算法教程里作为第 1 个向读者介绍的算法。应用在快速排序、归并排序里的分而治之思想、递归实现在计算机的世界里有着广泛的应用。「力扣」上的很多问题都不会直接考察排序算法,而是考察排序算法体现的思想和细节,例如快速排序的 partition 操作、计算逆序数、找第 k 大元素等。排序算法很重要,学好它们是学好算法的基础。原创 2023-05-25 14:01:20 · 33 阅读 · 0 评论 -
5.22—数学
数学是利用符号语言研究数量、结构、变化以及空间等概念的一门学科,从某种角度看属于形式科学的一种。数学透过抽象化和逻辑推理的使用,由计数、计算、量度和对物体形状及运动的观察而产生。数学家们拓展这些概念,为了公式化新的猜想以及从选定的公理及定义中建立起严谨推导出的定理。基础数学的知识与运用是个人与团体生活中不可或缺的一环。对数学基本概念的完善,早在古埃及、美索不达米亚及古印度内的古代数学文本便可观见,而在古希腊那里有更为严谨的处理。原创 2023-05-25 14:00:54 · 63 阅读 · 0 评论 -
5.18——动态规划
动态规划(英语:Dynamic programming,简称 DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,并且记录所有子问题的结果,因此动态规划方法所耗时间往往远少于朴素解法。动态规划有自底向上和自顶向下两种解决问题的方式。自顶向下即记忆化递归自底向上就是递推。使用动态规划解决的问题有个明显的特点,原创 2023-05-25 13:58:54 · 29 阅读 · 0 评论 -
5.25—深度优先搜索
深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次.因发明「深度优先搜索算法」,约翰 · 霍普克洛夫特与罗伯特 · 塔扬在1986年共同获得计算机领域的最高奖:图灵奖。原创 2023-05-25 14:05:00 · 40 阅读 · 0 评论 -
5.17——哈希表
哈希表(Hash Table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。哈希表通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做哈希函数存放记录的数组称做哈希表。原创 2023-05-25 13:59:23 · 37 阅读 · 0 评论 -
5.15——字符串
字符串是由零个或多个字符组成的有限序列。一般记为 s=a1a2...an。它是编程语言中表示文本的数据类型。(字符串就是字符数组)字符串与数组有很多相似之处,比如使用名称[下标]来得到一个字符。然而,字符串有其鲜明的特点,即结构相对简单,但规模可能是庞大的(这是相对于普通数组来说)。在编程语言中,字符串往往由特定字符集内有限的字符组合而成,根据其特点,对字符串的。原创 2023-05-17 11:22:15 · 275 阅读 · 0 评论 -
5.13——数组
数组是在程序设计中,把具有相同类型的若干元素按有序的形式组织起来的一种形式。作为线性表的实现方式之一,数组中的元素在内存中是存储的,且每个元素占相同大小的内存。数组通过快速访问每个元素的值。在大多数编程语言中,索引从 0 算起。在不同的编程语言中,数组的实现方式具有一定差别。比如 C++ 和 Java 中,数组中的元素类型必须保持一致,而 Python 中则可以不同。相比之下,Python 中的数组(称为 list)具有更多的高级功能。原创 2023-05-17 11:22:48 · 600 阅读 · 0 评论