zoukankan      html  css  js  c++  java
  • 代码面试算法相关技巧

    • 1.复杂度分析相关问题

    O(1)是极少出现的

    O(log n)一般很自然的就需要往二分方向思考

    O(sqrt(n)) 分解质因数

    O(n)

    O(nlog(n))一般可能需要排序

    O(n^2)、O(n^3)数组、枚举、动态规划

    O(2^n)与组合有关的搜索

    O(n!)与排列有关的搜索

    T(n)=2T(n/2)+O(n)   O(nlog(n))

    T(n)=2T(n/2)+O(1) O(n)

    使用树形分析法计算时间复杂度

    • 2.递归和WhileLoop的选择

    递归问题需要注意是否会导致栈溢出,一般链表问题递归容易导致栈溢出问题;

    面试时需要主动询问面试官是否可以使用递归实现,以及综合考虑代码实现的难度,递归的深度等。

    递归的话:

          递归三要素:

        递归的定义

        递归的出口

        递归的拆解

    • 3.Goole Java Coding Style  

    http://www.blogjava.net/zh-weir/archive/2014/02/08/409608.html

    https://google.github.io/styleguide/javaguide.html

    •  4.n&(n - 1)的妙用

    4.1 判断一个数是不是2的方幂

      n > 0 && (n & (n - 1) == 0)

    4.2 求一个数的二进制表示中"1"的个数(每次操作把最低的那个1换位0)

      while (n > 0)  {

        count++;

        n &= n-1;

      }  

     

  • 相关阅读:
    区块链服务平台设计
    Fabric 架构与设计
    ELSE 技术周刊(2017.12.25期)
    ELSE 技术周刊(2017.12.25期)
    ELSE 技术周刊(2017.12.25期)
    UDT的Sender和Receiver
    UDT的Sender和Receiver
    UDT的Sender和Receiver
    UDT的Sender和Receiver
    JavaScript 后台获取数据
  • 原文地址:https://www.cnblogs.com/futurehau/p/5837904.html
Copyright © 2011-2022 走看看