数据结构与算法
无
icgogogo
数字ic前端 Java后端
展开
-
LeetCode495 提莫攻击
题目错误代码 public int findPoisonedDuration(int[] timeSeries, int duration) { int nums = duration; for (int i = 0; i < timeSeries.length-1; i++) { if (timeSeries[i + 1] - timeSeries[i] >= duration) nums = .原创 2021-06-15 22:16:33 · 107 阅读 · 0 评论 -
打印字符串所有子序列(暴力递归到动态规划)
package DataStructure;import java.util.ArrayList;import java.util.List;public class PrintAllSubsequence { public static List<String> subs(String s){ char[] str = s.toCharArray(); String path = ""; List<String> .原创 2021-06-15 13:43:54 · 172 阅读 · 0 评论 -
快速排序QuickSort第一版
特点实现思想代码public class QuickSort { public static <E extends Comparable<E>> void sort( E[] nums){ sort(nums , 0 , nums.length-1); } private static <E extends Comparable<E>> void sort( E[] nums, int l , int原创 2021-06-11 13:16:30 · 93 阅读 · 2 评论 -
LeetCode66 加一
题目描述public int[] plusOne(int[] digits) { int size = digits.length; digits[size-1] = digits[size-1]+1; for (int i = size-1; i>-1;i--){ if (digits[i] ==10){ digits[i] = 0; digits[i.原创 2021-06-10 16:51:17 · 59 阅读 · 0 评论 -
LeetCode 88 合并两个有序数组
题目描述给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1 的空间大小等于m + n,这样它就有足够的空间保存来自 nums2 的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-sorted-array著作权归领扣网络所有。商业转载请联系官方授权,...原创 2021-06-10 16:10:28 · 142 阅读 · 0 评论 -
LeetCode27 移除元素
给你一个数组 nums和一个值 val,你需要 原地 移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-element著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。...原创 2021-06-10 15:29:11 · 85 阅读 · 1 评论 -
并查集UnionFind(2)
因为quickfind的合并操作复杂度On,所以现实很少用。常用的是quickUnion。同样实现并查集接口。public class UnionFind2 implements UF { private int[] parent; public UnionFind2(int size) { parent = new int[size]; for (int i = 0; i < size; i++) { paren原创 2021-06-03 14:17:37 · 44 阅读 · 0 评论 -
并查集UnionFind(1)
Quickfind并查集查找操作为O(1),合并操作为O(n)。创建并查集接口public interface UF { int getSize(); Boolean isConnected(int p , int q);//查 void unionElements(int p , int q);//并}原创 2021-06-03 14:06:13 · 43 阅读 · 0 评论 -
优先队列 --- 基于Heap
写一个队列queue接口,功能youpublic interface Queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E getFront();}原创 2021-06-03 14:01:16 · 72 阅读 · 0 评论 -
堆Heap 基于ArrayList实现
定义底层基于数组,//因为heap是一棵完全二叉树,所以很方便可以基于数组实现public class MaxHeap<E extends Comparable<E>> { private List<E> data; public MaxHeap(int capacity) { data = new ArrayList<>(capacity); } public MaxHeap() {原创 2021-05-31 20:45:34 · 187 阅读 · 0 评论 -
BST二分搜索树/二分排序树
add public void add(E e) { if (root == null) { root = new Node(e); size++; } else add(root, e); } private void add(Node node, E e) { if (e.equals(node.e)) {//终止条件 return;原创 2021-05-30 15:49:31 · 89 阅读 · 0 评论 -
数据结构链表实现及注意
public class LinkedList<E> { private int size; private Node dummyHead;链表类定义原创 2021-05-30 13:49:43 · 154 阅读 · 0 评论