随笔分类 - 算法
摘要:1 题目 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 输入:nums
阅读全文
摘要:1 题目 给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。 四元组(a, b, c, d)中,需要满足 a<=b<=c<=d,答案中不可以包含重复的四元组。 样例 1: 输入: numbers = [2,7,11,15] target = 3
阅读全文
摘要:1 题目 给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。 样例 1: 输入: numbers = [2,7,11,15] target = 3 输出: 20 解释:2+7+11=20 样例 2: 输入: numbers = [-1,2,1,-4
阅读全文
摘要:1 题目 给出一个有 n 个整数的数组 S,在 S 中找到三个整数 a, b, c,找到所有使得 a + b + c = 0 的三元组。 在三元组 (a, b, c),要求 a≤b≤c。结果不能包含重复的三元组。数组可能包含重复元素,但同一个索引下标的元素不可重复使用 样例 1: 输入: numbe
阅读全文
摘要:1 题目 趁着 RocketMQ在打包,做道算法题。 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。 样例 1: 输入: numbers = [2,7,
阅读全文
摘要:1 题目 给一个词典,找出其中所有最长的单词。 样例 1: 输入: { "dog", "google", "facebook", "internationalization", "blabla" } 输出: ["internationalization"] 样例 2: 输入: { "like", "
阅读全文
摘要:1 题目 给k个字符串,求出他们的最长公共前缀(LCP) 样例 1: 输入: k个字符串 = ["ABCD", "ABEF", "ACEF"] 输出: "A" 解释:公共最长前缀是"A". 样例 2: 输入: k个字符串 = ["ABCDEFG", "ABCEFG", "ABCEFA"] 输出: "
阅读全文
摘要:1 题目 给定一个未排序的整数数组num,找出最长连续序列的长度。 样例 1: 输入: num = [100, 4, 200, 1, 3, 2] 输出: 4 解释:这个最长的连续序列是 [1, 2, 3, 4]. 返回所求长度 4 2 解答 public class Solution { /** *
阅读全文
摘要:1 题目 两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数,要求时间复杂度应为 O(log(m + n))。 中位数的定义: 这里的中位数等同于数学定义里的中位数。 中位数是排序后数组的中间值。 如果有数组中有n个数且n是奇数,则中位数为 A((n-1)/2)。 如果有数组中有n个数
阅读全文
摘要:1 题目 跟进“搜索旋转排序数组”,假如有重复元素又将如何?是否会影响运行时间复杂度?如何影响?为何会影响?写出一个函数判断给定的目标值是否出现在数组中。 样例 1: 输入: A = [] target = 1 输出: false 解释:数组为空,1不在数组中。 样例 2: 输入: A = [3,4
阅读全文
摘要:1 题目 给定一个有序数组,但是数组以某个元素作为支点进行了旋转(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值target进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。你可以假设数组中不存在重复的元素。 样例 1: 输入: 数组 = [
阅读全文
摘要:1 题目 给你一个排序数组 nums,在逻辑上删除其中的重复元素,返回新的数组的长度 len,使得原数组 nums 的前 len 个元素中,每个数字最多出现两次。 如果一个数字出现超过2次,则这个数字最后保留两个。 样例 1: 输入: 数组 = [] 输出: 0 解释:空数组,长度为0. 样例 2:
阅读全文
摘要:1 前言 这节我们来看看常见的加密算法的分类以及每个分类下常用的一些算法哈。 2 分类 加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密。 2.1 不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和
阅读全文
摘要:1 前言 上节我们介绍了几个页面替换算法,也就是一种淘汰策略,这节我们就看一种新的算法:LRU哈。 2 LRU LRU(Least Recently Used,最近最少使用)算法根据页面的历史请求记录来进行淘汰页面,其核心思想是 “如果页面数据最近被访问过,那么将来被访问的几率也更高”。基于这个思想
阅读全文
摘要:1 前言 本节我们来看我们常用的哈希算法哈。 2 为什么要有哈希 假设我们要设计一个系统来存储将员工手机号作为主键的员工记录,并希望高效地执行以下操作: 插入电话号码和相应的信息。(插入) 搜索电话号码并获取信息。(查找) 删除电话号码及相关信息。(删除) 我们可以考虑使用以下数据结构来维护不同电话
阅读全文
摘要:1 前言 功能:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换。 目标:尽可能地减少页面的换进换出次数(即缺页中断的次数)。具体来说,把未来不再使用的或短期内较少使用的页面换出,通常只能在局部原理指导下依据过去的统计数据来进行预测。 2 最优页面替换算法 基本思路:当一
阅读全文
摘要:1 前言 今天把排序的几个算法过一下,这节我们看一下快速排序,简单的来说就是先找位置再拆,我们看示例。 2 代码示例 /** * 快速排序 * 快排主要就是先找位置再拆 */ public static void quickSort(int[] arr, int start, int end) {
阅读全文
摘要:1 前言 今天把排序的几个算法过一下,这节我们看一下归并排序,简单的来说就是先拆再合,跟快排相反(快排时先找位置再两边拆),我们看示例。 2 代码示例 /** * 归并排序 * 特点就是 跟快排相反,快排是先找再拆分,归并是先拆再合 * 折半拆,指导拆分单个以后开始向上汇集 */ public st
阅读全文
摘要:1 前言 今天把排序的几个算法过一下,这节我们看一下希尔排序,简单的来说就是多次插入排序,我们看示例。 2 代码示例 /** * 希尔排序,也就是多次插入排序 * 可以参考插入排序,然后外边套一层间隙循环 * 间隙到最后为1,就跟插入排序一样了 */ public static void shell
阅读全文
摘要:1 前言 今天把排序的几个算法过一下,这节我们看一下插入排序,简单的来说就是从第2个元素往前寻找位置进行插入,我们看示例。 2 代码示例 /** * 插入排序 * 从第2个元素开始,往前插入 * 假设待排序的数量为:n * 要考虑的是: * 1、轮数还是 n-1 我们外层循环起始刚好是2 到 n *
阅读全文

浙公网安备 33010602011771号