OUC_LiuX's Blog

为天地立心,为生民立命。
为往圣继绝学,为万世开太平。
虽未能至,心向往之。

Linux 网络编程学习笔记 -- 01

创建套接字 socket 函数理解

函数 socket 就是套接字,套接字就是 socket。socket() 函数用于创建一个新的socket,也就是向系统申请一个 socket 资源。 一个创建监听 socket 文件描述符的实例如下: #include <sys/socket.h> #include <sys/types.h> ...

Code Top -- 07 最大子数组和

最大子数组和

from CodeTop, Leetcode, 53. 最大子数组和。 动态规划。 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 思路 动态规划典型题,状态转移方程要清楚。 注意,状态转移方程: f(i) =...

Code Top -- 06 三数之和

三数之和

from CodeTop, Leetcode, 15. 3数之和。 双指针。 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 思路 数组排序后,遍历数组,剩下的...

Code Top -- 05 K 个一组翻转链表

25. K 个一组翻转链表

from CodeTop, Leetcode, 25. K 个一组翻转链表 背过。 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 思路 注意,内部节点翻转,判断是否翻...

Code Top -- 04 数组中的第K个最大元素

数组中的第K个最大元素

from CodeTop, Leetcode, 215. 数组中的第K个最大元素 用堆实现,时间空间消耗比快排低。 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 实用大根堆实现 重建一个大根堆,找第 k 大元素,...

Code Top -- 03 LRU缓存机制

LRU缓存机制

from CodeTop, Leetcode, 146. LRU缓存 面试高频。 请你设计并实现一个满足  LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如...

Code Top -- 02 无重复字符的最长子串

无重复字符的最长子串

from CodeTop, Leetcode, 3. 无重复字符的最长子串 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 典型双指针题目。由于所出现字符都包含在 ASCII 编码内,可以使用静态数组存储字符是实现的次数,节省空间和时间。 经典题,背过即可 int a[256]; int lengthOfLongestSubstring(st...

Code Top -- 01 反转链表

反转链表

from CodeTop, Leetcode, 206. 反转链表 阿里云一面题。 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 迭代做法(经典题,背过即可) 双指针,后一个节点 b 指向前一个节点 a。一次往后转移一位,由于后指针 next 值改变,需要使用一个临时变量存储后一指针。 迭代完成尾节点指针为 a,将头指针 next...

Series Article of Algorithm and Data Structure -- 06

堆排序

from ACWing , 838. 堆排序 堆是完全二叉树结构。 堆存储:维护一个 cnt 变量存储堆元素数量,则可以使用一维静态数组 heap[N] 存储堆。堆顶下标为 1,idx 下标节点的左右儿子节点分别 2*idx 和 2*idx+1。 上移:上移节点 k,则将之与 k/2 比较(若存在),若小于,则交换。并递归。 下移:下移节点 K,则将之与 u*2, u...

Series Article of Algorithm and Data Structure -- 05

KMP 算法 (背过即可)

from ACWing 830. KMP字符串, bilibili-KMP视频讲解 第12P,1小时28分开始。 KMP 的核心思想在于模式串的 next 数组。模式串中每一个字符对应一个 next 数组元素。next 数组存储截止到当前字符再前一个字符的最大相同前后缀长度。 举例子,截止到当前字符之前的子串为 “abcabc”,则其 next 值为 3。需要注意,前...