极客大学数据结构和算法学习

一、数据结构分类

1.一维数据结构

基础:数组、链表
高级:栈、队列、双端队列、集合、映射等

2.二维数据结构

基础:树、图
高级:二叉查找树、平衡树、红黑树、堆、并查集、字典树等

3.特殊数据结构

位运算、布隆过滤器、LRU cache
在这里插入图片描述

二、算法的分类

1.基础算法

  • branch:if-else、switch
  • Iteration: for、while
  • 递归

2.高级算法

  • 搜索:深度优先搜索、广度优先搜索
  • 动态规划
  • 二分查找
  • 贪心
  • 数学、几何
    在这里插入图片描述

三、自顶向下的编程方式

1.什么是自顶向下的编程方式

所谓的自顶向下的编程方法,本质上就是编写程序的视角从整体的宏观性逐层进入具体的微观性的一种编程思想。我们编写程序时一开始不用思考得事无巨细,把所有细节都想清楚;也不要面条式的想到哪里写到哪里。而应该是自顶向下的,从一个大的粗的核心的任务开始,逐级细分,最后再完成最底层的具体实现。

2.举例

LeetCode 125 验证回文串

class Solution {
    public Boolean isPalindrome(String str){
//        核心任务分解
//        1.过滤掉非字母和非数字
        String filterStr=filterNoCharAndNum(str);
//        2.翻转字符串
        String reverseStr=reverse(filterStr);
//        3.与过滤后的字符串比较并返回结果
        return filterStr.equalsIgnoreCase(reverseStr);
    }
    private String filterNoCharAndNum(String str){
        return str.replaceAll("[^A-Za-z0-9]","");
    }
    private String reverse(String str){
        return new StringBuilder(str).reverse().toString();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值