二分查找 发表于 2020-06-27 更新于 2021-12-06 分类于 数据结构和算法 阅读次数: 本文字数: 1.1k 阅读时长 ≈ 1 分钟 寻找一个数(基本的二分搜索)int binary_search(int[] nums, int target) { int left = 0, right = nums.length - 1; while(left <= right) { int mid = left + (right - left) / 2; if (nums[mid] < target) { left = mid + 1; } else if (nums[mid] > target) { right = mid - 1; } else if(nums[mid] == target) { // 直接返回 return mid; } } // 直接返回 return -1;} 阅读全文 »
滑动窗口 发表于 2020-06-26 更新于 2021-12-06 分类于 数据结构和算法 阅读次数: 本文字数: 5k 阅读时长 ≈ 5 分钟 leetcode 76. 最小覆盖子串给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。 示例: 输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”说明: 阅读全文 »
回溯 发表于 2020-06-21 更新于 2021-12-06 分类于 数据结构和算法 阅读次数: 本文字数: 5.3k 阅读时长 ≈ 5 分钟 全排列、子集、组合leetcode 46. 全排列给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例: 阅读全文 »
排序算法 发表于 2020-06-08 更新于 2021-12-06 分类于 数据结构和算法 阅读次数: 本文字数: 3.6k 阅读时长 ≈ 3 分钟 排序算法对比 算法 时间复杂度 是稳定排序? 是原地排序? 冒泡排序 o(n^2) ✅ ✅ 插入排序 o(n^2) ✅ ✅ 选择排序 o(n^2) ❌ ✅ 快速排序 o(nlog(n)) ❌ ✅ 归并排序 o(nlog(n)) ✅ ❌ 桶排序 o(n+k) k是数据范围 ✅ ❌ 计数排序 o(n) ✅ ❌ 基数排序 o(dn) d是维度 ✅ ❌ 堆排序 O(nlogn) ❌ ✅ 阅读全文 »
动态规划 发表于 2020-06-03 更新于 2021-12-06 分类于 数据结构和算法 阅读次数: 本文字数: 9.9k 阅读时长 ≈ 9 分钟 表达式匹配leetcode 10.正则表达式匹配给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。 说明: s 可能为空,且只包含从 a-z 的小写字母。 p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。 阅读全文 »