算法小抄--摘抄

  1. 从整体到细节,自顶向下,从抽象到具体的框架思维都是通用的,不只是学习数据结构和算法,这样学习其他的任何知识都是高效的。

  2. 数据结构的底层存储方式只有两种:数组(顺序存储) 和 链表(链式存储)

  3. 对于任何数据结构,其基本操作就是遍历 + 访问, 在具体一点就是: 增, 删, 该, 查

  4. 各种数据结构的遍历: 线性 + 非线性

  • 数组
void traverse(int [] arr) {
  for (int i = 0; i < arr.length; i++) {
    // 迭代访问 arr[i]
  }
}
  • 链表
class ListNode {
  int val;
  ListNode next;
}

void traverse(ListNode head) {
  for (ListNode p = head; p != null; p = p.next) {
    // 迭代遍历 p.val
  }
}

void traverse(ListNode head) {
  // 前序遍历
  traverse(head.next);
  // 后序遍历
}
  • 二叉树
class TreeNode {
  int val;
  TreeNode left, right;
}

void traverse(TreeNode root) {
  // 前序遍历
  traverse(root.left);
  // 中序遍历
  traverse(root.right);
  // 后序遍历
}
  • N叉树--图的扩展遍历
class TreeNode {
  int val;
  TreeNode[] children;
}
void traverse(TreeNode root) {
  for (TreeNode c hild: root.children) {
    traverse(child);
	}
}

所谓的框架思维,就是套路。不管增删改查,这些代码都是永远无法脱离的结构,你可以把这个结构作为大纲,根据具体问题在框架上添加代码就行了。

posted @ 2021-02-19 13:19  HelloCoderRookie  阅读(376)  评论(0编辑  收藏  举报