随笔分类 - 数据结构与算法
摘要:冒泡排序: 点击查看代码 public static void bubbleSort(int[] arr) { if (arr == null || arr.length == 1) { return; } // 比较多少次 // 外循环控制的是没排好一个元素下次还有进行多少次排序 for (int
阅读全文
摘要:最小覆盖子串: 点击查看代码 // 最小覆盖子串 public String minWindow(String s, String t) { // 把t中的字符全部放到map中去 Map<Character, Integer> map = new HashMap<>(); for(char ch:
阅读全文
摘要:区间合并: 代码实现 public int[][] merge(int[][] intervals) { // 特殊情况处理 if (intervals == null || intervals.length <= 1) { return intervals; } Arrays.sort(inter
阅读全文
摘要:斐波那契数列: 代码实现: public int fib(int n) { if (n <= 1) return n; // 1、定义状态数组,dp[i]表示的是数字i的斐波那契数 int[] dp = new int[n + 1]; // 2、初始状态 dp[0] = 0; dp[1] = 1;
阅读全文
摘要:把数组排成最小的数字: 代码实现 public class Solutionm { // 把数组排成最小的数字 public String minNumber(int[] nums) { List<String> list = new ArrayList<>(); for (int num : nu
阅读全文
摘要:矩阵中的路径: 题目: 实现: 代码实现 public class Solutionm { // 矩阵中的路径 public boolean exist(char[][] board, String word) { char[] charArr = word.toCharArray(); for (
阅读全文
摘要:寻找数据流的中位数: 代码实现 /** * 设计一个数据结构: * 得到一个数据流的中位数 */ public class MedianFinder { PriorityQueue<Integer> bigHeap; PriorityQueue<Integer> smallHeap; public
阅读全文
摘要:合并链表 代码实现 class ListNode1 { int val; ListNode1 next; public ListNode1(int value) { this.val = value; } } public class Solution { public ListNode1 merg
阅读全文
摘要:用2个栈实现队列: 代码实现 /** * Your CQueue object will be instantiated and called as such: * CQueue obj = new CQueue(); * obj.appendTail(value); * int param_2 =
阅读全文
摘要:不含重复字符的最长子串: 实现方案1: 代码实现 public int longestSubStr(String str) { int max = 0; Deque<Character> deque = new ArrayDeque<>(); for (int i = 0; i < str.leng
阅读全文
摘要:快速排序核心思想 随机选取一个基准值 小于基准值的放在左边 大于基准值的放在右边 重复此过程 代码实现 快排代码 public void quickSort(int[] arr, int L, int R) { if (L < R) { swap(arr, L + (int)(Math.random
阅读全文