随笔分类 - 数据结构与算法
摘要:简介 k-d树(k-dimensional),是一种分割k维数据空间的数据结构(对数据点在k维空间中划分的一种数据结构),主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。 举例 上图就是一颗kdtree,可以看出kdtree是二叉搜索树的变种。 kdtree的性质: kdtree具有平
阅读全文
摘要:https://blog.csdn.net/qq_29519041/article/details/81428934 https://blog.csdn.net/hpu2022/article/details/84862186?utm_medium=distribute.pc_relevant.no
阅读全文
摘要:之前学习数据结构与算法零零散散,不成体系。所以总结一下常用的数据结- 。.. 构与算法还有有代表性的题目。有一个大致的框架,方便安排进度。 关于集合类源码的笔记java容器源码分析及常见面试题笔记 @(目录) 数据结构 文字、声音、图片。。。。。。这些都是数据。 而数据结构是计算机存储、组织数据的方
阅读全文
摘要:@(目录) ArrayList简介 ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。 它继承于 Abstrac
阅读全文
摘要:@ "TOC" 283. 移动零 开始的想法是把零都挪到后面,看到了一种效率更高的写法,思路是先遍历一遍数组,把遇到的非零数按顺序重新复制,后面的全修改成零 766. 托普利茨矩阵 每个元素都跟左上角元素比较,因为第0行和第0列都没有左上角元素,所以两个索引都从1开始。 565. 数组嵌套 将访问过
阅读全文
摘要:242.有效地字母异位词 由于本题的字符串只包含 26 个小写字符,因此可以使用长度为 26 的整型数组对字符串出现的字符进行统计,并对比字母出现的次数是否一致。不再使用 HashMap。 toCharArray()的用法 java中的foreach的用法 class Solution { publ
阅读全文
摘要:1.两数之和 可以先对数组进行排序,然后使用双指针方法或者二分查找方法。这样做的时间复杂度为 O(NlogN),空间复杂度为 O(1)。 用 HashMap 存储数组元素和索引的映射,在访问到 nums[i] 时,判断 HashMap 中是否存在 target - nums[i],如果存在说明 ta
阅读全文
摘要:题目 232.用栈实现队列 class MyQueue { private Stack<Integer> in = new Stack<>(); private Stack<Integer> out = new Stack<>(); public void push(int x) { in.push
阅读全文
摘要:使用java实现链表 单向链表 双向链表 单向循环链表 双向循环链表 题目记录 160.相交链表 例如以下示例中 A 和 B 两个链表相交于 c1: A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3Copy to clipboardErrorCopied 但是不
阅读全文
摘要:什么是Trie树? 转载于https://www.cxyxiaowu.com/7535.html Trie [traɪ] 读音和 try 相同,它的另一些名字有:字典树,前缀树,单词查找树等。 开始之前我们先看看来 Trie 树的几个常见的应用场景: Google、Baidu 等搜索引擎的搜索提示
阅读全文
摘要:图的基本概念 图由顶点(vertex)和边(edge)组成,通常表示为G=(V,E)G表示一个图,V是顶点集,E是边集1顶点集V有穷且非空任意两个顶点之间都可以用边来表示它们之间的关系,边集E可以是空的 广度优先搜索BFS 广度优先搜索的过程是一层一层的遍历,在选定起始点以后,第一次找到与起始点距离
阅读全文
摘要:在处理一个较为复杂的问题时,划分为若干个小问题,在每一次进行选择时,都作出当前子问题的最优解,并认为子问题合并后的整体也达到了最优解或者近似最优解。 步骤: (1)建立数学模型来描述问题。 (2)把求解的问题分成若干个子问题。 (3)对每一子问题求解,得到子问题的局部最优解。 (4)把子问题的局部最
阅读全文
摘要:前言 动态规划(dynamic programming,简称 dp)是工程中非常重要的解决问题的思想,从我们在工程中地图软件上应用的最短路径问题,再在生活中的在淘宝上如何凑单以便利用满减券来最大程度地达到我们合理薅羊毛的目的 ,很多时候都能看到它的身影。 不过动态规划对初学者来说确实比较难,dp状态
阅读全文
摘要:因为不能用除法,开始的想法是用一个循环嵌套,复杂度是O(n²)。剑指offer里的方法更好。 代码: /*给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。 不能
阅读全文
摘要:package 数组; /*在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。 也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3} ,那么对应的输出是第一个重复的数字2。*
阅读全文
摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从 上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 public class 二维数组中的查找 { /* * 最初反应是遍历一遍,但是数组从左到右和从上到下
阅读全文
摘要:二插搜索树在使用过程中可能会出现接近于线性表的情况。如图: 这种情况的出现可能是一开始就是这样的结构,也有可能是在进行了删除操作后变成了这样。但是不管何种原因,这样的二插搜索树算法复杂度已经由O(logn)变得无限接近O(n)。退化成了链表结构。 这种情况下自然希望减小树的高度,使二插搜索树恢复平衡
阅读全文
摘要:二叉搜索树(Binary Search Tree) ◼ 二叉搜索树是二叉树的一种,是应用非常广泛的一种二叉树,英文简称为 BST 又被称为:二叉查找树、二叉排序树 任意一个节点的值都大于其左子树所有节点的值 任意一个节点的值都小于其右子树所有节点的值 它的左右子树也是一棵二叉搜索树 ◼ 二叉
阅读全文
摘要:树(Tree)的基本概念 ◼ 节点、根节点、父节点、子节点、兄弟节点 ◼ 一棵树可以没有任何节点,称为空树 ◼ 一棵树可以只有 1 个节点,也就是只有根节点 ◼ 子树、左子树、右子树 ◼ 节点的度(degree):子树的个数 ◼ 树的度:所有节点度中的最大值 ◼ 叶子节点(leaf):度为 0 的节
阅读全文
摘要:头尾两端都可以进行添加和删除操作。 接口设计 ◼ int size(); // 元素的数量 ◼ boolean isEmpty(); // 是否为空 ◼ void clear(); // 清空 ◼ void enQueueRear(E element); // 从队尾入队 ◼ E deQueueFr
阅读全文