leedcode刷题第二周

分治法加递归

class Solution(object):

    def helper(self, oper, j ,k):

        if oper=='+':

            return j+k

        elif oper=='-':

            return j-k

        else:

            return j*k

    def diffWaysToCompute(self, input):

        """

        :type input: str

        :rtype: List[int]

        """

        if input.isdigit():

            return [int(input)]

        res=[]

        for i in range(len(input)):

            if input[i] in "+-*":

                res1 = self.diffWaysToCompute(input[:i])

                res2 = self.diffWaysToCompute(input[i+1:])

                for j in res1:

                    for k in res2:

                        res.append(self.helper(input[i],j,k))

        return res

if input.isdigit():

return[int(input)]

递归

packagetest;publicclassStairs{/** * @authorCxl * @paramargs */publicstaticvoidmain(String[] args){intn =5;intmaxStep =3; System.out.println("方案数:"+ getStepNum(n, maxStep)); }/** * * @authorCxl * @paramn 总的台阶数 * @paramm 一次可以走的最大楼梯阶数 * @return*/privatestaticintgetStepNum(intn,intm){intsumStep =0;//总台阶数为0时,终止递归循环if(n ==0) {return1; }if(n >= m) {//如果n大于每步最大台阶数,则设置第一步为m之内的一个台阶数,然后递归循环for(inti =1; i <= m; i++) { sumStep += getStepNum(n - i, m); } }//如果n小于m,则将一步最大台阶数缩小为n,重新递归else{ sumStep = getStepNum(n, n); }returnsumStep; }}

sqrt

if x ==0;return 0

mid =left +(right-left)//2


twosum(hasmap)


链表交叉

先检验边界情况

if not head A or not headB:

    return None


词异位

栈实现队列

你可能感兴趣的:(leedcode刷题第二周)