算法
None_is_everything
这个作者很懒,什么都没留下…
展开
-
6-链表专题
值得注意的是特殊情况的处理,例如链表里原本只有一个结点,删除后将会是一个空的链表,需返回None(Python里没有NULL...我因为这个之前老是报错),或者是当删除的是头结点,返回的将是头结点的下一个元素。它的原理是,先初始化两个指针,都指向第一个元素,然后快指针一次走两步,慢指针一次走一步,当快指针走到链表末尾的时候,慢指针刚好走到链表的一半位置。链表和数组不一样,它不能直接通过下标来访问对应的元素,只能通过遍历来获取链表的长度以及对应元素,但链表的好处在于,它能够轻松地添加和删除某个元素。...原创 2022-07-27 18:13:05 · 203 阅读 · 0 评论 -
5-矩阵专题(杨辉三角+重构矩阵)
在MATLAB中,有一个非常有用的函数reshape,它可以将一个mxn矩阵重塑为另一个大小不同(rxc)的新矩阵,但保留其原始数据。给你一个由二维数组mat表示的mxn矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;输出[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。...原创 2022-07-26 11:48:50 · 205 阅读 · 0 评论 -
4-动态规划(买卖股票)
动态规划的目的在于不断寻找前一个元素的最小值,和后一个元素的最大值,这样差就一定是最大的。解释在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。“给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。前i天的最大收益=max(前i-1天的最大收益,第i天的价格-前i-1天中的最小价格)...原创 2022-07-25 17:05:22 · 160 阅读 · 0 评论 -
3-原地算法(轮转数组)
可以发现,n=7时,k取15时候的右轮转和k取1时候的右轮转是一样的效果,所以为了避免多余的运算,需要先k=k%n的操作。3.再反转数组中后k到n-1个元素[5,6,7,4,3,2,1]->[5,6,7,1,2,3,4]2.再反转数组中前k个元素[7,6,5,4,3,2,1]->[5,6,7,4,3,2,1]1.先反转整个数组[1,2,3,4,5,6,7]->[7,6,5,4,3,2,1]输入nums=[1,2,3,4,5,6,7],k=3。输出[5,6,7,1,2,3,4]...原创 2022-07-24 17:07:36 · 241 阅读 · 0 评论 -
2-双指针法
对于这道题,它的想法是原本的数组是按照非递减顺序排列的,那么平方后的最大值,要么在最左边,要么在最右边,中间值一定是最小的,就是一个“大-小-大”的排序。这样就可以用两个指针,一个指向数组的起始元素,另一个指向数组的最后一个元素,再比较两者的大小,取大的存在新数组中,以此类推,直到取完。看起来很简单,第一反应就是先将每个元素都平方了,再直接用排序算法就暴力搞定,但是这样的做法时间复杂度是O(n+nlogn)。解释平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]...原创 2022-07-24 16:38:25 · 71 阅读 · 0 评论 -
1-二分查找问题
给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。最近开始刷Leetcode了!鉴于我并不是计算机科班出身的大佬,那就先从基础的算法开始学习叭!第一章----二分查找问题。链接https//leetcode.cn/problems/binary-search。二分查找适用于有序数组+无重复元素(这个主要是避免查找到多个元素从而返回多个下标)来源力扣(LeetCode)......原创 2022-07-23 16:20:21 · 164 阅读 · 0 评论