Merge Two Sorted Lists (Python)
2014年2月10日 16:05
curr = curr.next执行后要确保curr不是None, 而是一个ListNode, 这就需要预先给curr一个ListNode, 也就是开头的curr = ListNode(0), 调了好久才发现, 晕...
github我的刷题 https://github.com/chaor/LeetCode_Python_Accepted | 我翻译的python3.4官网教程 kitt.me/py3
curr = curr.next执行后要确保curr不是None, 而是一个ListNode, 这就需要预先给curr一个ListNode, 也就是开头的curr = ListNode(0), 调了好久才发现, 晕...
动态规划,依次求出target=1, 2, 3 ... N时的solution set, 后面的结果依赖于前面的结果。
递归方法,str(int(s)) == s是为了去掉前导0,即Input="010010"时, Output不能是"0.1.0.010"之类的。
In-place的话,先以matrix[0][n-1]...matrix[n-1][0]对角线为轴交换元素,再以水平中线(即第(n+1)/2行)交换元素。
题目给出1到N的正整数,但是不全,里面也可能混着0和负整数,找出第一个缺失的正整数。要求时间O(N)空间固定,可使用原数组,通过交换元素使得A[i] = i + 1,第二次遍历时不满足A[i] = i + 1的就是要找的数。
自己写果然一上来就超时啊, 看了水中的鱼的解体报告, 可以用二分法, 也可以用牛顿迭代法, x = (x + a / x) / 2, 膜拜大神啊
看了Discuss才会的, 题目说还可以divide and conquer, 咋整捏? S[i]存的是以A[i]为结尾的Subarray的最大和。
递归解法和非递归解法都能过。非递归解法中p指针指的位置如果达到了允许的最大值, p指针就前移。比如C(5,3)得到了[1,2,5], p指向第三个位置已经达到了最大值5, 则p前移,指向第二个位置,c[p]+=1, 于是得到[1,3,4]。当p指向第一个位置且它达到最大值,也就是[3,4,5]的时候就结束了,多谢朱老师的点播。递归解法要注意C(self, List, k)返回的是list of list。
O(N^2)的解法, 对sum排序。先定下来a,在从a~末尾的这一段区间里找b,c, 两头往中间走。需要注意去重, 对于num=[-4,-1,-1,0,1,2]不要出来两组(-1,0,1)
注意head == None的情况,没用到Sorted这个特性,应该有占空间更少的解法。
经Derek提醒,可用dict来存每个integer的初始位置。需注意num=[0,4,3,0], target=0这种两加数相等的情况。