算法
算法
sosososoon
这个作者很懒,什么都没留下…
展开
-
查找算法2
对撞指针两数之和题目描述:给出一个整型数组 nums,返回这个数组中两个数字的索引值 i 和 j,使得 nums[i] + nums[j] 等于一个给定的 target 值,两个索引不能相等。示例:nums= [2,7,11,15],target=9 返回[0,1]解题思路:暴力法时间复杂度为 O(n2)O(n^2)O(n2),第一遍遍历数组,第二遍遍历当前遍历值之后的元素,其和等于target则return。代码:class Solution: def twoSum(self原创 2020-08-28 21:55:51 · 538 阅读 · 0 评论 -
查找算法
查找原创 2020-08-26 01:53:15 · 489 阅读 · 0 评论 -
动态规划(Dynamic Programming,DP)
动态规划动态规划适用于有重叠子问题和最优子结构性质的问题,动态规划方法所消耗的时间往往远少于朴素解法。主要思想动态规划算法通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题,按顺序求解子问题,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解原创 2020-08-24 10:48:29 · 573 阅读 · 0 评论 -
分治
分治主要思想分治算法的主要思想是将原问题递归地分成若干个子问题,直到子问题满足边界条件,停止递归。把一个复杂的问题分成多个相同或相似的子问题,再把子问题分成更小的子问题直到最后子问题可以简单地直接求解,原问题的解即子问题的解的合并。分治算法的步骤分:递归地将问题分解为各个的子问题(性质相同的、相互独立的子问题)治:将这些规模更小的子问题逐个击破合:将已解决的子问题逐层合并,最终得出原问题的解分治法适用的情况原问题的计算复杂度随着问题的规模的增加而增加原问题能够被分解成更小的子问题原创 2020-08-17 19:10:25 · 215 阅读 · 0 评论