- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 LeetCode(132)分割回文串 II和背包问题
一.01背包问题一、问题描述:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?二、总体思路:根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填表、寻找解组成)找出01背包问题的最优解以及解组成,然后编写代码实现;三,原理:当前物品重量wi大于当前背包容量w的时候,直接去前一个物...
2019-01-09 21:06:39
264
原创 leetcode(17)电话号码的字母组合(46)全排列
一.电话号码的字母组合题目大意:将给定的一个仅包含数字2~9的字符串 按照电话九宫格上数字与字母的对应关系 输出所有可能的字母组合题目分析:本题的难点在于数字字符串的长度是个变量,若是一个固定的几位数,那么就可以写几重循环,依次输出即可。我的解题思路是:首先将字符串中的每个数字对应成一个字母列表,按顺序将各个字母列表放在一个列表中,比如“23”,就可以转换为[[“a”,“b”,“c”],[“...
2019-01-08 11:39:24
258
转载 递归与动态规划学习小结
一递归的基本思想所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。我们可以把” 递归 “比喻成 “查字典 “,当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词。可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂的,那么递归走到了尽头,然后你...
2019-01-07 18:10:04
154
原创 LeetCode(98)验证二叉搜索树(102,107)层次遍历
(98)验证二叉搜索树二叉树的三种访问方式1.先序遍历:按照根节点->左子树->右子树的顺序访问二叉树先序遍历结果:A BDFE CGHI思维过程:(1)先访问根节点A,(2)A分为左右两个子树,因为是递归调用,所以左子树也遵循“先根节点-再左-再右”的顺序,所以访问B节点,(3)然后访问D节点,(4)访问F节点的时候有分支,同样遵循“先根节点-再左–再右”的顺序,...
2019-01-06 15:08:24
347
5
原创 LeetCode(239)滑动窗口最大值
堆:什么是堆?又该怎么理解呢?①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:·堆中某个节点的值总是不大于或不小于其父节点的值;·堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。②堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。③堆...
2019-01-05 17:40:18
249
1
原创 leetcode(142)环形链表和(206)反转链表
1、如果链表没有环,那么快指针比慢指针先到达尾部(null)。2、如果链表有环的话,因为快指针走的比慢指针快,所以在环中相遇的过程可以看作是快指针从环后边追赶慢指针的过程。假设慢指针进入环中时,即连接点p,快指针(q)需要m步才能追上慢指针。p和q第一次相遇时,碰撞点在pq处。此时,p走到pq时用了m步。假设head到p的距离为a,环长度为Length环,慢指针走了s步,则快指针走了2s...
2019-01-04 16:44:07
513
原创 leetcode(1)两数求和 (202)快乐数
class Solution:def twoSum(self, nums, target):“”":type nums: List[int]:type target: int:rtype: List[int]“”"hash=dict(nums,range(len(nums)))for i in range(len(nums)):num=target-nums[i]if hash...
2019-01-03 15:57:33
125
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人