![](https://img-blog.csdnimg.cn/20200926103655365.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
实现数据结构和算法
程序员卡卡西
架构就是取舍
展开
-
数据结构和算法——二叉树
二叉树:树的每个节点最多只能有两个子节点。 树的效率:查找节点的时间取决于这个节点所在的层数,每一层最多有2n-1个节点,总共N层共有2n-1个节点,那么时间复杂度为O(logN),底数为2。 二叉树的前、中、后序遍历 前序遍历 递归 public void preorderBT(BinaryTree root) { //结束条件 if (root == null) return; //递归主体 System.out.p原创 2020-08-11 21:02:11 · 180 阅读 · 0 评论 -
数据结构和算法——排序
本文介绍常见的排序编程题 冒泡排序 思路:双层循环嵌套,比较并交换 public static int[] sort(int[] array) { //需要多少轮比较(N-1) for (int i = 1; i < array.length; i++) { //每轮需要参与比较的元素下标(N-1-i) for (int j = 0; j < array.length - i; j++) {原创 2020-08-11 21:01:01 · 86 阅读 · 0 评论 -
数据结构和算法——链表
链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。 使用链表结构可以克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 删除链表中重复元素(排序链表) 思路:有序链表,遍历当前节点和下一个节点相等,删除即可 public ListNode deleteDuplicates(原创 2020-08-11 20:59:24 · 156 阅读 · 0 评论 -
数据结构和算法——字符串
本文介绍常见的字符串编程题 反转字符串 思路:while循环遍历,交换前后对应位置元素 public void reverseString(char[] s) { int i = 0; int j = s.length - 1; while (i < j) { char temp = s[i]; s[i] = s[j]; s[j] = temp; i++;原创 2020-08-11 20:58:04 · 93 阅读 · 0 评论 -
数据结构和算法——数组
在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。 数组是存在下标索引的,通过下标可以获取指定位置的元素,数组小标是从0开始的,也就是说下标0对应的就是数组中第1个元素,可以很方便的对数组中的元素进行存取操作。 数组特点: 数组一旦创建后,大小就固定了,不能动态扩展数组的元素个数。 查找 如果根据下标查找速度很快。 如果根据元素值来查找,对于无序数组,我们需要从数组第一个元素开始遍历,直到找到那个元素。有序数组通过特定的算法查找的速度会比无需原创 2020-08-11 20:55:52 · 108 阅读 · 0 评论 -
数据结构和算法练习——其他
数据结构 一、数组 寻找重复数 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 思路:利用HashSet去重特性 public int findDuplicate(int[] nums) { HashSet set = new HashSet(); for(int i = 0;i<nums.length;i++){ if(!se原创 2020-08-06 21:04:07 · 105 阅读 · 0 评论