- 博客(19)
- 收藏
- 关注
原创 LeetCode140-单词拆分 II In Python
这一题和上一题单词拆分1思想一样,但是实现更为复杂。这一题要求写出可以拆分成的单词们。解题:试了暴力递归超时。上一题的动态规划思想在这一题中没法写出具体的种类。但是还是有一种记忆化的方法。直接上代码代码:class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: ...
2019-04-20 23:24:04
522
原创 LeetCode139-单词拆分 In Python
给出一个字符串和一个字典,要求出这个字符串能否被划分为这个字典中的一个或者多个单词。单词可重复使用。解题:用动态规划。dp[i+1]表示在s[:i+1]这个切片是否由字典中的单词组成。而dp[i+1]=1的前提是dp[i+1-j]=1且s[i-j+1:i+1]这个切片在字典当中,其中j为字典中存在的某一单词的长度(需要列举所有字典存在单词以查看是否存在这个单词)。代码:class S...
2019-04-20 22:59:51
283
原创 求一个数的平方根和一个数的n次方——Python实现
求一个数的平方根,用牛顿迭代法实现。def p(x): pre,res=0.0,1.0 while abs(pre-res)>0.00001: pre=res res=(res+x/res)/2 return res求一个数的n次方,时间复杂度为O(logn)def power(x,n): if not n: ...
2019-03-21 09:39:22
2643
原创 数组和链表的插入排序--Python实现
数组def sortL(n): for i in range(len(n)): m=i for j in range(i,len(n)): if n[j]<n[m]: m=j n[i],n[m]=n[m],n[i] return n链表def sortL(n...
2019-03-18 13:36:14
503
原创 数组和链表的归并排序--Python实现
原理简单就不说了,贴出代码。数组的def merge(p,q): x=[] ii,jj=len(p),len(q) i=j=0 while i<ii and j<jj: if p[i]<q[j]: x.append(p[i]) i+=1 else: ...
2019-03-18 11:07:55
300
原创 LeetCode53-Maximum Subarrayt In Python
题目要求找出其中子序列的最大和。解题:就用动态规划就行。代码:class Solution: def maxSubArray(self, nums: List[int]) -> int: l=len(nums) dp=[nums[0]]*l res=nums[0] for i in range(1,l):...
2019-03-12 19:44:50
239
原创 LeetCode16-3Sum Closest II In Python
本题和上一题寻找三数之和为零相似。不过这题是找三个数之和以接近给定数值。解题:和上一题一样,先定下一个数再找另外两数,不过这次需要计算和的同时计算与给定数值的差的绝对值,最后返回的是那个差绝对值最小的和值。代码:class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int:...
2019-03-11 13:01:51
212
原创 LeetCode15-3Sum II In Python
本题要求从给定的列表里面找出三个和为0的数。解题:考虑先找一个数再找两个数的方法。首先给列表排序,从小到大的顺序。如果列表中的第一个数字大于0或者最后一个数字小于0就没有找的必要了。在定下一个数字后,再从该数后面的数中找到两数,这里要注意用从两边向中间寻找的方式。代码:class Solution: def threeSum(self, nums: List[int]) -&...
2019-03-11 09:24:51
150
原创 python之list中元素修改问题(二维列表修改部分元素)
之前python做题用到了二维Listl=[[3]*3]*4但是,当我想将l[0][0]=0的时候,输出却变成了这样查阅资料后发现list的浅拷贝问题,二维列表里面保存的是一维列表的地址,我这样赋值是把第一个[3]*3也就是[3,3,3]的地址复制了四遍,这个二位列表看似有了四个一维的[3,3,3],但是其实它们在内存里都是指向一个对象,所以之后修改任意一行的其中元素,其他行的...
2019-03-07 20:38:00
8883
2
原创 LeetCode63-Unique Paths II In Python
本题是62题的稍微修改版,输入的地图用0表示可通行,用1表示障碍。解题:同样有递归方法和动态规划的方法,递归方法仍然超时,不过还是放在这里。代码:递归方法:class Solution: def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int: self.res...
2019-03-07 20:12:41
237
原创 LeetCode300-Longest Increasing Subsequence In Python
本题给出一个数字列表,要求在其中找出一个最长的递增序列,找出的数字可以不连续。解题:本题考虑用动态规划的方法来做,先建立一个数组dp[],dp[i]表示到nums[i]这个数的最长递增序列,这样通过遍历比较就能递推出各自的dp[i]最后返回最大的那个dp就行。代码:class Solution: def lengthOfLIS(self, nums: List[int]) -...
2019-03-07 11:09:42
294
原创 LeetCode31-Next Permutation In Python
本题给出一个列表的数字,然后将该列表修改为以当前列表数字为基础更大的一个排列。解题:对于给出一个没有重复数字的数,要用当前数的数字组成一个更大一点的数的方法。先举例说明好了。1 5 6 8 7 9的更大一个数是1 5 6 8 9 71 5 6 8 9 7的更大一个数是1 5 6 9 7 81 5 6 9 7 8的更大一个数是1 5 6 9 8 71 5 6 9 8 7的更大一个...
2019-03-07 10:40:41
225
原创 LeetCode62-Unique Paths In Python
本题给了一个坐标格子,要求机器人从地图的左上角移动到右下角,每次只能向右或者向下移动一个格子,求一共有多少路径可以到达右下角。解题:看到路径规划,第一反应是用递归的方法。但是这里有一个需要注意的点是机器人只能向右或者向下移动,因此我们的递归边界不用放置在到达终点,而可以放在到达右边界或者下边界的任意一点(因为只要到达右边界,剩下的路只能一直向下走,到达下边界同理),只要到达右或下边界即可认为找...
2019-03-06 11:06:33
205
原创 LeetCode11-Container With Most Water In Python
本题要求将列表数字当做容器墙壁高度,各墙壁下标差当做墙壁之前的距离,以此选出两个容器墙壁,装最多的水。解题:当然是遍历列表,选出两个墙壁,计算盛水量,最后选出最大值。但是要注意的是不需要任两个墙壁都进行计算,这样的话时间复杂度为O(n^2),比较慢。要找快的方法应该这样想:在两面容器墙距离尽可能远的情况下,挑选两面最高的墙。这样的话,我们从列表两端同时向中间遍历,以找到那个最大盛水量,时间复杂...
2019-03-03 23:48:43
115
原创 LeetCode2-Add Two Numbers In Python
本题给了两个逆序链表代表两个数字,要求将两个数字相加之后,再将结果用逆序链表的形式表示出来。解题:链表顺序和数字顺序相反,正好按照链表顺序,从数字的个十百千。。。位加过去,大于十则往前进一。代码:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# s...
2019-03-03 22:42:11
173
原创 LeetCode1-Two Sum In Python
本题题目是给一个target,通过给定的target找到列表里面和为该值的两数,并返回它们的下标。解题:考虑使用字典,通过遍历列表,看字典里面是否有与当前值和为target的值存在,若有,则返回两个下标,若没有,则把当前数字加入到字典。需要注意的是字典里key为当前数字,value为下标。代码:class Solution: def twoSum(self, nums, ta...
2019-03-03 22:10:48
111
原创 JAVA继承中的构造方法
当一个类中不写任何构造方法时候,类会自动创建一个无参构造方法(什么也不做)。当实例化一个子类对象时,会先实例化一个父类对象。当一个类有有参构造方法时,系统不会自动创建一个无参构造方法。综上:在实例化子类对象时,先会实例化一个父类对象,无论用子类哪个构造方法进行,该构造方法中都要先用super()调用父类其中一个构造方法,来实例化父类对象,如果不写则自动添加super()调用父类中的无参构造方...
2018-09-27 21:18:41
194
原创 JAVA内存
Java运行时的数据区一般分为JAVA栈,本地工作栈,程序计数器,堆和方法区。其中:JAVA栈:存放局部变量,基本类型变量的值,对象的引用等。堆:new出来的对象。方法区:方法区中又有常量池以及静态区等。方法区存放方法,字段,类的信息等。其中静态变量存在静态区。成员方法不占用内存,在使用的时候压入栈。...
2018-09-27 20:46:27
136
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人