算法学习总结
准小赖
软件工程专业学生。Java、深度学习、算法、andriod开发学习ing
展开
-
合理使用数据类型
合理使用数据类型今天在力扣中编写回文数算法的时候,发现就是运行失败,提示为: Char 26: runtime error: signed integer overflow: 998765432 * 10 cannot be represented in type 'int' [solution.c]运行时错误:有符号整数溢出:998765432*10不能在类型“int”[solution.c]中表示。于是我把int改为了long long类型,运行成功。我就很奇怪,这为什么能溢出。之后发现是力扣原创 2021-01-19 14:46:30 · 5626 阅读 · 2 评论 -
算法之捆绑的数据如何排序
平时一个普通的数组,我们直接用sort数组就能对其排列。但如果是捆绑的数据,只对其中一个数组或者说是分别对两个数组进行排序,就会把它们之间的一一对应关系打乱。如下题:每个时间可能对应不同的id,而按题目要求需要找【T,T+D】时刻内被点赞的id,因此需要对ts进行排序,并且保持它们之间的对应关系。这是就可以定义一个pair< , >或struct来存放两种数据。如果用pair来存放,那么用sort排序,就会它的前一个数据的大小进行排序,这样就能保持原本的对应关系;其次如果用struct,就原创 2021-03-21 18:39:55 · 378 阅读 · 0 评论 -
蓝桥杯真题——递增三元组
题目(题目源于c语言官网)看到这个题,大多数人首先想到的应该都是暴力求解,嵌套for循环直接求解,但是在比赛系统里面会超时。因此需要更优的算法。为此,我们可以把每一个数组进行排序,之后再进行查找就方便多了。具体操作为:以b数组作为中间桥梁做一个for循环,找数组a中比b[i](i=1、2、3…N)小的元素个数x,和数组c中比b[i](i=1、2、3…N)大的元素个数y,将x*y,就是以b[i]为基础的三元组个数,最后将它们累加就是总的三元组个数。以下是代码:代码中需要注意四个点:1.#inc原创 2021-03-18 21:34:20 · 445 阅读 · 0 评论 -
算法之深度优先
前言目前为止,做过的一些深度优先算法的题目中,都是在定义的dfs函数中用递归的方法进行深度搜索。而搜索过程中需要一个标记数组的配合。多说无益直接上两道题。1.蓝桥杯真题——全球变暖这道题目的关键点就在于:1.你如何把每座岛区分开来,得出岛的数量。2.如何计算岛屿的占地面积(有几块陆地)。普通的for循环你很难把属于一座岛的陆地联系起来,且不好区分每座岛。而深度优先算法在这里就很好实现了,直接上代码:一旦找到一块陆地,就开始深度搜索,被搜索过的陆地标记为1(区别于路径问题,因为每块陆地只原创 2021-03-19 17:20:48 · 269 阅读 · 0 评论 -
算法学习总结——树状数组
算法学习总结——数组数组原创 2023-02-27 13:29:51 · 134 阅读 · 0 评论