数据结构
王世代
这个作者很懒,什么都没留下…
展开
-
Java,跳表的实现,支持增删查功能,充满注释
注释里的内容够多了,这里就不废话了。这个跳表是支持泛型的 import java.util.Random; public class SkipList<E extends Comparable<E>> { // 节点类,跟链表差不多 private class Node<E extends Comparable<E>>{ public E e; // 跳表需要可比较的值类型 public Node原创 2020-07-27 22:40:26 · 171 阅读 · 0 评论 -
二叉树中的递归
Leetcode上有几道关于二叉树的题,都可以用递归的方式解决 递归的三部曲,首先明确递归的终止条件,然后确定递归要解决的问题,返回值,最后依据最小的问题单元进行递归 100 判断两棵二叉树是否相同 public boolean isSameTree(TreeNode p, TreeNode q) { if(p == null && q == null) //终止条件 return true; if原创 2020-07-01 12:52:20 · 150 阅读 · 0 评论 -
Leetcode中一些双指针练习,Java
1、反转字符串数组:给定一个字符数组,反转。要求原地进行,空间复杂度为O(1)。 public void reverseString(char[] s) { int n = s.length; int l = 0; int r = n - 1; while (l < r) swap(s, l++, r--); } private static void swap(char[] arr, in原创 2020-06-19 16:13:12 · 142 阅读 · 0 评论 -
Leetcode 167,三种解法,最佳时间复杂度为O(n)给定一个数,求有序数组中两个数的和刚好等于它,返回索引
最简单直接的就是两层循环,时间复杂度为O(n^2) public int[] twoSum(int[] numbers, int target) { for(int i = 0; i < numbers.length; i ++){ for(int j = i + 1; j < numbers.length; j ++){ if(numbers[i] + numbers[j] == target){原创 2020-06-19 00:00:45 · 180 阅读 · 0 评论 -
Java实现的二叉搜索树插入元素的递归与非递归方法
搜了一圈没找到Java的非递归方法,就自己写了。 private class Node{ K key; V value; Node left; Node right; Node(K key, V value){ this.key = key; this.value = value; this.left = this.right = null;原创 2020-06-15 23:01:05 · 415 阅读 · 0 评论 -
构建堆等高级数据结构时,底层的数组使用resize()实现动态数组
private void resize(int newCapacity){ E[] newData = (E[])new Comparable[newCapacity]; for(int i = 1; i < size+1; i ++) newData[i] = data[i]; data = newData; capacity = newCapacity; }原创 2020-06-14 15:30:17 · 160 阅读 · 0 评论