栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

算法肝道夫之路

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法肝道夫之路

1.如何高效的刷算法题?

五步刷题法:

第一遍:尝试解决问题,解决不了背诵默写其他人的题解

第二遍:快速将脑海中的题解写到leetcode上,尽量超过leetcode80%以上的人

第三遍: 24小时以后重新刷

第四遍: 一周以后重新刷题

第五遍:面试一周或一个月前,重刷并手写代码(模拟真实环境)

2. 1-002-算法时间复杂度分析

常见时间复杂度

O(1) 常数阶

O(logn) 对数阶

O(n) 线性阶

O(nlogn) 线性对数阶

O(n^2) 平方阶

O(n^3) 立方阶

O(2^n) 指数阶

O(n!) 阶乘阶

O(n^n) 

从上到下的时间复杂度递增,一般情况下时间复杂度到立方阶就不能要了,到平方阶就要考虑是否有必要。

3. 什么是递归

1.一个问题可以分解为相同的几个子问题

2.存在终止条件

4.1-004-(LeetCode-70) 爬楼梯 

1.第一遍

import java.util.HashMap;
import java.util.Map;

class Solution {
    private Map map = new HashMap();
    //递归实现
    public int climbStairs(int n) {
        if(n==1) return 1;
        if(n==2) return 2;
        //如果map中存在值,返回,不存在,重新计算
        if(null != map.get(n)){
            return map.get(n);
        }else{
            //放入map中
            int sum = climbStairs(n-1)+climbStairs(n-2);
            map.put(n,sum);
            return sum;
        }
    }

    public static void main(String[] args) {
        System.out.println(new Solution().climbStairs(4));
    }
}
5. 斐波那契数
import java.util.HashMap;
import java.util.Map;


class Solution {
    Map map = new HashMap();
    public int fib(int n) {
        if(n == 0 ){ return 0;}
        if(n == 1 ){ return 1;}
        if(null != map.get(n)){
            return map.get(n);
        }else{
            int sum = fib(n-1) + fib(n-2);
            map.put(n,sum);
            return sum;
        }
    }
}

1. 两数之和

import java.util.HashMap;
import java.util.Map;


class Solution {
    public int[] twoSum(int[] nums, int target) {
        //暴力穷举
//        for(int i=0;i map = new HashMap();
        for(int i=0;i map = new HashMap();
//        for (int i =0 ;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/889296.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号