求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

算法 系列 素数

基础数据结构...

素数的定义看起来很简单,如果⼀个数只能被 1 和它本⾝整除,那么这个数就是素数。 返回区间 [2, n) 中有⼏个素数 1 2 3 4 // 返回区间 [2, n) 中有⼏个素数 int countPrimes(int n) // ⽐如 countPrimes(10) 返回 4 // 因为 2,3,5,7 是素数 方法一 1 2 3 4 5 6 7 8 9 10 1...

算法 系列 数字运算

基础数据结构...

字符串转整数 1 2 3 4 5 6 7 string s = "458"; int n = 0; for (int i = 0; i < s.size(); i++) { char c = s[i]; n = 10 * n + (c - '0'); } // n 现在就等于 458 坑: (c -‘0’) 的这个括号不能省略,否则可能造成整型溢出。 因为变量 ...

算法 系列 字符串乘法

基础数据结构...

需要注意的是, num1 和 num2 可以⾮常⻓,所以不可以把他们直接转成整型然后运算,唯⼀的思路就是模仿我们⼿算乘法。 整个计算过程⼤概是这样,有两个指针 i,j 在 num1 和 num2 上游⾛,计算乘积,同时将乘积叠加到 res 的正确位置。num1[i] 和 num2[j] 的乘积对应的就是 res[i+j] 和 res[i+j+1] 这两个位置。 1 2 3 4 5...

算法 系列 前缀

基础数据结构...

前缀和不难,却很有⽤,主要⽤于处理数组区间的问题。 前缀和的思路是这样的,对于⼀个给定的数组 nums ,我们额外开辟⼀个前缀和数组进⾏预处理: 1 2 3 4 5 6 int n = nums.length; // 前缀和数组 int[] preSum = new int[n + 1]; preSum[0] = 0; for (int i = 0; i < n; i+...

算法 系列 位运算

基础数据结构...

⼏个有趣的位操作 利⽤或操作 和空格将英⽂字符转换为⼩写 1 2 ('a' | ' ') = 'a' ('A' | ' ') = 'a' 原理: 1 2 3 4 5 6 7 ------小写------- a 1100001 b ...

算法 系列 twoSum

基础数据结构...

设计的核⼼在于权衡,利⽤不同的数据结构,可以得到⼀些针对性的加强。 ⼀般情况下,我们会⾸先把数组排序再考虑双指针技巧。受 TwoSum 启发,HashMap 或者 HashSet 也可以帮助处理⽆序数组相关的简单问题。 twoSum I 给定⼀个数组和⼀个整数 target ,可以保证数组中存在两个数的和为 target ,请返回这两个数的索引 利用哈希表解法: 1 2 3...

网络 系列 Cookie

开启 网络 探索新篇章

cookie相关基础知识,可以逐步考察候选人或者有挑选的询问 cookie是什么? 为什么需要cookie? cookie和session有什么区别? cookie是怎么被种到浏览器中的? cookie中包含哪些内容,其中的httpOnly具体含义是什么? 相关拓展知识: 如果浏览器开启了禁用cookie,要怎么处理? 如何解决session分布式存储问题? 问题描述:互联网公司往往都拥有着...

算法 系列 队列

基础数据结构...

队列 API 如下: 1 2 3 4 5 6 7 8 9 10 class MyQueue { /** 添加元素到队尾 */ public void push(int x); /** 删除队头的元素并返回 */ public int pop(); /** 返回队头元素 */ public int peek(); /** 判断队列是否为空 */ public ...

算法 系列 滑动窗口

基础数据结构...

最小覆盖子串 滑动窗⼝算法的思路是这样: 在字符串 S 中使⽤双指针中的左右指针技巧,初始化 left = right = 0,把索引闭区间 [left, right] 称为⼀个「窗⼝」 先不断地增加 right 指针扩⼤窗⼝ [left, right],直到窗⼝中的字符串 符合要求(包含了 T 中的所有字符)。 此时,停⽌增加 right,转⽽不断增加 left 指针...

算法 系列 栈

基础数据结构...

栈(stack)是很简单的⼀种数据结构,先进后出的逻辑顺序,符合某些问题的特点,⽐如说函数调⽤栈。 ⽤队列实现栈 只需要⼀个队列作为底层数据结构。⾸先看下栈的 API: 1 2 3 4 5 6 7 8 9 10 class MyStack { /** 添加元素到栈顶 */ public void push(int x); /** 删除栈顶的元素并返回 */ public...