数据结构与算法分析
Liao_Xiang
这个作者很懒,什么都没留下…
展开
-
DP
这里写目录标题120. 三角形的最小路径和方法一 (自底向上)方法二 (自顶向下)120. 三角形的最小路径和方法一 (自底向上)class Solution { /** * dp: 自底向上 * https://leetcode-cn.com/problems/triangle/solution/javadong-tai-gui-hua-si-lu-yi-ji-...原创 2020-03-27 21:05:41 · 204 阅读 · 0 评论 -
排序算法总结
文章目录一、快速排序二、归并排序2.1 求数组的小和2.1 求数组的逆序对三、堆排序四、插入排序一、快速排序public class QuickSort { public static void main(String[] args) { int[] arr = {6, 3, 5, 4, 9, 1, 7, 8, 2}; quickSort(arr, 0...原创 2020-03-08 20:22:16 · 281 阅读 · 0 评论 -
字符串相关题目
3. 无重复字符的最长子串public static int lengthOfLongestSubstring(String s) { int n = s.length(), ans = 0; Map<Character, Integer> map = new HashMap<>(); for (int end = 0, start = 0; e...原创 2020-03-07 18:51:02 · 341 阅读 · 0 评论 -
数组相关题目
文章目录一、数组实现栈二、数组实现队列三、稀疏数组四、数组中的最大差值01. 两数之和04. 有序数组的中位数11. 盛最多水的容器15. 三数之和26. 删除排序数组中多余重复元素27. 删除数组中指定的元素53. 最大子序和74. 搜索二维矩阵88. 合并两个有序数组121. 买卖股票的最佳时机1122. 买卖股票的最佳时机2169. 多数元素189. 旋转数组_和恢复229. 求众数 II(...原创 2020-03-07 12:53:03 · 468 阅读 · 0 评论 -
二叉树相关题目
一、二叉树前、中、后序遍历public class PreInPosTraversal { public static class TreeNode { public int value; public TreeNode left; public TreeNode right; public TreeNode(int v...原创 2020-03-06 21:25:56 · 242 阅读 · 0 评论 -
二分法相关题目
704. 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。class Solution { /** * 二分法模板 * @param arr * @param target * @return */ publ...原创 2020-03-01 21:40:37 · 407 阅读 · 0 评论 -
寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。public class Solution { public double findMedianSortedArrays(int A[], int B[]) { ...原创 2020-03-01 16:05:36 · 139 阅读 · 0 评论 -
布隆过滤器
如果一个黑名单网站包含100亿个黑名单网页,每个网页最多占64B,设计一个系统,判断当前的URL是否在这个黑名单当中,要求额外空间不超过30GB,允许误差率为万分之一。布隆过滤器其中重要的实现就是位图的实现,也就是位数组,并且在这个数组中每一个位置只占有1个bit,而每个bit只有0和1两种状态。如上图bitarray所示!bitarray也叫bitmap,大小也就是布隆过滤器的大小。假设一...原创 2020-02-27 10:04:03 · 489 阅读 · 0 评论 -
排序算法的应用
一、利用归并排序求小和public class MergeSortSmallSum { public static void main(String[] args) { int[] arr = {1, 3, 4, 2, 5}; System.out.println(mergeSort(arr, 0, arr.length - 1)); } ...原创 2020-01-06 11:27:57 · 420 阅读 · 0 评论 -
二十二、数组[最大差值]
一、最大差值public static int maxGap(int[] arr){ if (arr == null || arr.length < 2){ return 0; } int length = arr.length; // 初始化max为最小值 int max = Integer.MIN_VALUE; // 初...原创 2019-11-18 15:06:04 · 243 阅读 · 0 评论 -
二十一、链表[两个单链表的交点(有无环) / 回文结构]
一、单链表的相交问题 public static class Node { public int value; public Node next; public Node(int data) { this.value = data; } } public static Node getIntersectNode(Node head1, Node head2) { ...原创 2019-11-18 11:33:00 · 109 阅读 · 0 评论 -
十八、二叉树序列化与反序列化
public static class Node { public int value; public Node left; public Node right; public Node(int data) { this.value = data; }} /** * 先序序列化 * 序列成字符串用 _ 分割节点,# 代表null * @param ...原创 2019-11-17 11:21:20 · 108 阅读 · 0 评论 -
十六、堆排序
一、堆排序完全二叉树:完全二叉树从根结点到倒数第二层满足完美二叉树,最后一层可以不完全填充,其叶子结点都靠左对齐,堆就是完全二叉树数组——完全二叉树(通过下标来维护彼此的关系)大根堆:当前树(子树)中(包含子树)的最大值都是头部小根堆:当前树(子树)中(包含子树)的最小值都是头部数组——>大根堆public class HeapSort { public stati...原创 2019-11-16 20:34:04 · 185 阅读 · 0 评论 -
十五、荷兰国旗问题与改进的快速排序
荷兰国旗public class Ex2 { public static void main(String[] args) { int[] arr = {6, 1, 8, 2, 9, 7, 3, 4}; partition(arr, 5); System.out.println(Arrays.toString(arr)); } ...原创 2019-11-16 19:30:06 · 148 阅读 · 0 评论 -
十二、哈希表
package com.liaoxiang.hashtable;import java.util.Scanner;/** * @auther Mr.Liao * @date 2019/9/7 14:33 */public class HashTableDemo { public static void main(String[] args) { //创建哈...原创 2019-09-07 16:56:58 · 111 阅读 · 0 评论 -
十一、排序(快速/归并/冒泡/选择/插入/希尔)
一、冒泡排序package com.liaoxiang.sort;import org.junit.Test;import java.util.Arrays;/** * @auther Mr.Liao * @date 2019/8/6 15:28 */public class BubbleSort { /** * 冒泡排序,由小到大排 * 冒泡排序...原创 2019-08-07 08:59:41 · 149 阅读 · 0 评论 -
十、递归
简单递归:package com.liaoxiang.recursion;/** * @auther Mr.Liao * @date 2019/8/5 19:44 */public class SimpleRecursionDemo { public static void main(String[] args) { test1(4); Sys...原创 2019-08-06 11:54:35 · 99 阅读 · 0 评论 -
九、栈的简单应用(计算字符串表达式的值)
package com.liaoxiang.stack;/** * @auther Mr.Liao * @date 2019/7/21 14:25 */public class Calculator { public static void main(String[] args) { String expression = "30+2*6-10"; ...原创 2019-07-21 14:29:29 · 303 阅读 · 0 评论 -
八、数组模拟栈(扩容)/求栈中的最小值/栈实现队列/队列实现栈
package com.liaoxiang.stack;import java.util.Scanner;/** * @auther Mr.Liao * @date 2019/7/21 11:05 */public class ArrayStackDemo { public static void main(String[] args) { //测试一下Ar...原创 2019-07-21 11:11:42 · 142 阅读 · 0 评论 -
七、单链表(约瑟夫问题)
package com.liaoxiang.linkedList;/** * @auther Mr.Liao * @date 2019/7/20 16:11 */public class Josephus { public static void main(String[] args) { CircleSingleLinkedList list = new Ci...原创 2019-07-20 17:13:11 · 151 阅读 · 0 评论 -
六、java双向链表
package com.liaoxiang.linkedList;import org.junit.Test;/** * @auther Mr.Liao * @date 2019/7/20 11:00 */public class DoubleLinkedListDemo { @Test public void test1(){ Person2 p1...原创 2019-07-20 15:25:10 · 99 阅读 · 0 评论 -
链表相关题目
一、单链表无序添加元素节点class Person{ private int rank; private String name; private String nickName; private Person nextPerson;}链表class SingleLinkedList{ //此时head的 nextPerson = null ...原创 2019-07-08 15:07:17 · 293 阅读 · 0 评论 -
一、数组实现队列、数组实现栈、稀疏数组二维数组转换
package com.liaoxiang.sparseArray;/** * @auther Mr.Liao * @date 2019/7/5 11:36 * 二维数组-> 稀疏数组->二维数组 */public class SparseArray { public static void main(String[] args) { //原始二维...原创 2019-07-05 16:31:50 · 215 阅读 · 0 评论