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


词异位

栈实现队列

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,342评论 0 13
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 7,112评论 0 1
  • 简述 极客时间算法40讲中所出现的leetcode算法题 题目 【链表】reverse-linked-list(反...
    BestbpF阅读 9,927评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,798评论 1 32
  • 开始之前,首先需要明白一个概念——版本库。版本库是用于版本管理的,里面包含了目录锁、hook、数据仓库的信息(即文...
    Zoulf阅读 11,344评论 0 0