Java
王世代
这个作者很懒,什么都没留下…
展开
-
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 · 180 阅读 · 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 · 149 阅读 · 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 · 189 阅读 · 0 评论 -
Leetcode第80题,去除有序数组中的元素,允许重复k次
循环不变量/**Question 80. 去掉排序数组中的重复元素 * 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 * * 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 * * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii * 著作权归领扣网络所有。商原创 2020-06-18 01:00:35 · 285 阅读 · 0 评论 -
从二分查找法看循环不变量-JAVA
上代码,注释里写了具体的含义 public static int binarySearchRN(Comparable[] arr, int n, Comparable target){ //int l = 0, r = n - 1;//在数组中从[l...r]的范围内寻找target //循环不变量l 与 r 就代表了需要查找的这个范围的左右边界,而选择取不同的值,对于这个区间来说就是开区间与闭区间的区别,在修改它们的同时,也需要在循环中同步这一定义。这也就是循环不变量的原创 2020-06-17 20:19:54 · 414 阅读 · 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 · 427 阅读 · 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 · 165 阅读 · 0 评论