内容栏目
算法与数据结构
LeetCode、杭电 OJ、排序与哈希、动态规划
本栏目共 29 篇,含 3 个系列。全文免费,增值资料包在公众号发放。
所属系列
全部文章
深入解析 Huffman 编码:原理与应用
Huffman 编码,作为一种高效的前缀编码方式,由美国计算机科学家 戴维·A·哈夫曼 于 1952 年提出。它在数据压缩领域具有重要地位,尤其适用于文本、音频、视频等数据的压缩处…
LC:520.检测大写字母
题目 我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如 USA 。 单词中所有字母都不是大写,比如 leetcode 。 如果单词不只含有一个字母,只有首字…
LC:495.提莫攻击
题目 在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。 当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒…
LC:268.丢失的数字
题目 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 示例 1 示例 2 示例 3 示例 4 提示 进阶…
LC:42.接雨水
题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 示例 2: 提示 相关题目 相关链接 - 力扣(LeetCod…
LC:407.接雨水II
题目 给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。 示例 示例 1 示例 2 提示 相关题目 相关链接 …
LC:367.有效的完全平方数
题目 给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。 进阶:不要 使用任何内置的库函数,如 sqrt 。 示…
LC:237.删除链表中的节点
题目 请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。 题目数据保证需要删除的节点 不是…
LC:1218.最长定差子序列
题目 给你一个整数数组 arr 和一个整数 difference ,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。 子序列…
LC:575.分糖果
题目 Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。 Alice 注意到她的体重正在增长,所以前去拜访了一位医生。 医生建议 Alice 要少摄入…
1005 Number Sequence
题目信息 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota…
1004 Let the Balloon Rise
题目信息 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota…
1003 Max Sum
题目信息 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota…
1002 A + B Problem II
题目信息 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota…
1001 Sum Problem
题目信息 Time Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total…
1000 A + B Problem
题目信息 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota…
快速排序
快速排序思想 快速排序的核心思想也是 分治思想。 快速排序主要要以待排数组中的某个数字为基准。将整个数组中的数据分为小于基准的一组和大于等于基于的一组.(或者是小于等于基准的一组和…
桶排序
排序思想 把将要排序的数据分到几个有序的桶里,每个同理的数据再单独进行排序, 桶内拍完序之后, 再把每个桶里的数据按照顺序依次取出, 组成的序列就是有序的了. 排序实现逻辑 [:b…
选择排序
基本思想 以第一个元素为基准,与后面的元素进行对比.选择最值(最大值/最小值)与当前位置进行交换。对每个元素都为基准比较,这就是排序过程了. 实现过程 代码实现 排序算法的评估 基…
归并排序
将数组从中间分成前后两部分,然后对前后两部分分别进行排序,再将排好序的两部分合并在一起,这样整个数组就是有序的了。 归并体现的思想就是 分治思想 分而治之, 将一个大问题分解成小的…
排序算法
排序算法开篇 排序算法有很多,比如常见的 冒泡排序,插入排序,选择排序,归并排序,快速排序,计数排序,基数排序,桶排序, 还有不常见的猴子排序,睡眠排序,面条排序等。 其中, 冒泡…
冒泡排序
基本思想 每次都操作两个相邻的数据.每次冒泡操作都对相邻的两个数据进行比较,看是否满足大小关系要求,如果不满足,就进行互换。每次冒泡都会冒出一个最小/大值,并移动到它应该在的位置.…
哈希算法
哈希算法 哈希算法,又称为: 散列函数, 散列算法。 哈希算法是指将任意长度的二进制值串映射为固定长度的二进制串的这一规则。 举个例子: Jdk 的 HashMap 中。 看似实现…
一致性哈希算法的实现
上一篇介绍了 哈希算法和一致性哈希算法的原理,我们知道哈希算法在分布式场景应用中存在着定位问题。所有有一致性哈希算法。 今天我们就动手实现以下哈希算法。 可选性 回顾一下 哈希算法…
递归
数据结构与算法 这一个模块 有两个最难的知识点, 一个就是 递归 , 另一个就是 动态规划 我们今天来学习下递归这种实现方式。 个人认为,递归不是一种算法, 就是一种语法。所以我就…
动态规划
:point right: [动态规划其实就是动态递推]{.label .success}:point left: 要点 递归+记忆化 - 递推(自下而上的递推) 状态的定义,op…
LC:反转链表I
题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例一 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例二 输入:head …
LC:反转数组
题目 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(…
雪花算法
介绍 雪花算法是 twitter 开源的由 64 位整数组成的分布式 id 。目的是在分布式系统中产生全局唯一且趋势递增的 ID 。 其核心思想就是: 使用一个 64 bit 的 …
配套资料 · 免费领取
本文属于「ALGO」资料包范围:算法系列合订 + 刷题清单。LeetCode 与杭电 OJ 的题解索引。
在公众号「方家小白」回复关键词 ALGO 即可领取。全文无需关注即可阅读。
ALGO