随笔分类 -  数据结构与算法

摘要:# 1 基础知识 数组是存放在连续内存空间上的相同类型数据的集合 - 数组下标从0开始 - 数组内存空间地址连续 # 2 经典题目 ## 2.1 二分法 - 704 二分查找 - 35 搜索插入位置 - 34 在排序数组中查找元素的第一个和最后一个位置 - 69 x 的平方根 - 367 有效的完全 阅读全文
posted @ 2023-07-02 22:36 hunter-w 阅读(12) 评论(0) 推荐(0) 编辑
摘要:1. n & (n - 1) 运算结果恰为把n的二进制位中的最低位的1变为0之后的结果,可用来计算位1的个数。 public class Solution { public int hammingWeight(int n) { int ret = 0; while (n != 0) { n &= n 阅读全文
posted @ 2022-04-05 22:42 hunter-w 阅读(25) 评论(0) 推荐(0) 编辑
摘要:public class BinarySearch { // 二分查找 public static int bSearch(int[] nums, int target) { int n = nums.length; int low = 0; int high = n - 1; while (low 阅读全文
posted @ 2021-11-18 00:33 hunter-w 阅读(31) 评论(0) 推荐(0) 编辑
摘要:图解并查集 并查集的作用就是把一个数据集分成若干个子集,每个子集内部数据可以互联互通,而子集之间则不具有连通性。 并查集的底层结构类似于堆,也是用数组描述一种树结构,但不同的是,堆是一棵独立的二叉树,并查集的树是多叉树,而且可能不止一棵树(也就是森林)。 在并查集中,我们把相互独立的数据集称为连通分 阅读全文
posted @ 2021-07-22 16:55 hunter-w 阅读(86) 评论(0) 推荐(0) 编辑
摘要:解题模板 def findSubArray(nums): N = len(nums) # 数组/字符串长度 left, right = 0, 0 # 双指针,表示当前遍历的区间[left, right],闭区间 sums = 0 # 用于统计 子数组/子区间 是否有效,根据题目可能会改成求和/计数 阅读全文
posted @ 2021-07-18 00:20 hunter-w 阅读(60) 评论(0) 推荐(0) 编辑
摘要:常用临时变量来保存中间值,达到交换两个数的目的,我们可以使用异或运算来交换两个数。 ####实现 a = a^b; b = a^b; a = a^b; ####原理 基本性质 任意变量x与自身异或结果为0,即:x^x = 0 任意变量x与0进行异或运算,结果不变,即:x^0 = x 异或运算的结合性 阅读全文
posted @ 2021-04-20 21:25 hunter-w 阅读(506) 评论(0) 推荐(0) 编辑
摘要:实现前缀树 知识点 Trie (发音为 "try") 或前缀树是一种树数据结构,用于检索字符串数据集中的键。 常见的应用场景有: 自动补全 拼写检查 IP路由(最长前缀匹配) 打字预测 示例 实现 Trie (前缀树) class TrieNode { private final int R = 2 阅读全文
posted @ 2021-02-11 21:33 hunter-w 阅读(213) 评论(0) 推荐(0) 编辑
摘要:描述 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点) 思路 C++版本 使用depth记录深度,每下潜一层vector开辟一个新的元素,使用递归先序遍历获取元素,保证左边节点在返回结果的左边。 /** * Definition for a binary t 阅读全文
posted @ 2020-05-13 22:57 hunter-w 阅读(240) 评论(0) 推荐(0) 编辑
摘要:给自己留一个坑,逐个实现经典的排序算法。 用例测试使用"LeetCode 912. 排序数组"。 阅读全文
posted @ 2020-04-12 17:27 hunter-w 阅读(135) 评论(0) 推荐(0) 编辑
摘要:针对一些要求in place的问题,使用双指针法可有效的解决。 1.数组 在空间复杂度为O(1)的情况下,移除数组中的元素 在空间复杂度为O(1)的情况下,去重已排序的数组 阅读全文
posted @ 2019-11-23 22:13 hunter-w 阅读(106) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示