12 2017 档案
摘要:题目描述: 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先
阅读全文
摘要:这种方法速度比较快,其运算次数与输入n的大小无关,只与n中1的个数有关。如果n的二进制表示中有k个1,那么这个方法只需要循环k次即可。 其原理是不断清除n的二进制表示中最右边的1,同时计数器加1,直至n为0。 对于int 型32位的呢 int型32位表示范围为-2^31~2^31-1,最高位表示符号
阅读全文
摘要:ord('0')=48,ord('A')=65,ord('a')=97chr(65)='A' def str2Int(s): s=s.strip() if len(s)==0: return 0 dict_flag={'+':1,'-':-1} sum_,flag=0,1 if s[0] in di
阅读全文
摘要:一、根据正则表达式替换字符串 二、re.split() 可以使用re.split来分割字符串,如:re.split(r'\s+', text);将字符串按空格分割成一个单词列表。 三、re.findall re.findall可以获取字符串中所有匹配的字符串。如:re.findall(r'\w*oo
阅读全文
摘要:思路分解: 1.如果两个数的二级制逻辑与后为0,则可以世界利用或运算进行对应位相加,例如3+4=011+100=111=7 2.如果两个数的二进制逻辑与后不为0,怎进行转换,先逻辑异或运算,得到个位数,在逻辑与并进行移位操作。 3.直到两个数逻辑与后为0为止,然后进行逻辑或相加即可。
阅读全文
摘要:1.输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 思路:该方法为O(n)时间复杂度,非常巧妙,思路值得借鉴。设置两个指针,一个指向最左端,一个指向最右边,如果左端数值+右端数值等于S,则此时两个数乘积最小,两个数的距
阅读全文
摘要:递归二分查找 非递归二分查找 带重复元素的有序数组返回查找元素第一次出现的位置
阅读全文
摘要:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)最优方法,时间复杂度O(n),和最大的子序列的第一个元素肯定是正数 ,因为元素有正有负,因此子序列的最大和一定大于0 def FindGreatestSumOfSubArray(self, array): maxVal=array[0] ...
阅读全文
摘要:一、构建与遍历二叉树 基本性质 1)在二叉树的第i层上最多有2i-1 个节点 。(i>=1)2)二叉树中如果深度为k,那么最多有2k-1个节点。(k>=1)3)在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]是向下取整。向下取整就是小数点后面的数字无论多少,都只
阅读全文