从右上往左下方向找边缘 O(m+n) time O(1) space
复杂度要不是m要不是n,最多是m+n
1 | /** |
1 | /** |
从右上往左下方向找边缘 O(m+n) time O(1) space
复杂度要不是m要不是n,最多是m+n
1 | /** |
1 | /** |
跟301. Remove Invalid Parentheses不完全一样
跟921. Minimum Add to Make Parentheses Valid结合起来看
O(n) time
1 | class Solution { |
1 | class Solution { |
O(m*n) time O(1) space where m is the avg length of a word while n is the number of words
1 | class Solution { |
O(n) time
1 | /** |
1 | struct A { |
Emacs CS模式
在~/.emacs里加入
1 | (require 'server) |
或者(server-start),emacs启动的时候就会自动启动server。然后你可以利
用emacscilent -c命令来打开一个新的窗口,速度会非常快。这有个缺点,如果充当server
的emacs被关闭之后,使用客户端命令就会出现无法打开的现象。可以使用emacs –daemon&
模式在后台打开一个emacs作为server
开机自动启动emacs
Linux下在~/.profile里加入emacs –daemon&即可
以后就可以使用emacsclient -c启动客户端了
Emacs和Emacsclient
有的时候,快速启动得到的emacsclient不能编辑需要sudo的文件。这是因为它的server没
有处在root权限下,所以会出现出错的现象。另外,emacsclient下的字体背景等会和原来
的有差异。我的解决办法是,平时开启一个emacs进程作为主要编辑的工具,另外一个
emacsclient则是编辑临时文件的时候使用,这样既保证了编辑临时文件的速度问题,同样
尽可能的排除错误。
O(logn)
循环版本
1 | class Solution: |
1 | class Solution { |
1 | class Solution { |
1.00000
-2147483648
这个测试用例很重要!因为-INT_MIN还是INT_MIN!!所以必须要把n < 0的分支分离出来,否则会造成死循环
1 | class Solution { |
1 | class Solution { |
O(nk) time
这道题考如何hash
followup是MapReduce
1 | class Solution: |
1 | class Solution: |
1 | class Solution: |
1 | class Solution { |
普通解法 O(nklogk) time
1 | class Solution: |
1 | class Solution { |
1 | const int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101}; |
two spins O(n2)
先上下翻转,再沿对称轴翻转
1 | class Solution: |
1 | class Solution: |
1 | class Solution { |
直接移 O(n2)
1 | class Solution { |
O(n*n!) time
先写 dfs 版本再写循环版本
先排序,对于每个位置,从小到大枚举之后的每个数(相同的数要跳过)
1 | class Solution: |
1 | class Solution { |
O(n*n!) time
1 | class Solution { |
O(nn) time
1 | class Solution { |