随笔分类 - algorithms
摘要:Question 题解 首先找到各个单词(以空格隔开),根据题目要求,单词应从后往前依次放入。正向取出比较麻烦,因此可尝试采用逆向思维——先将输入字符串数组中的单词从后往前逆序取出,取出单词后即翻转并append至新字符串数组。在append之前加入空格即可。 源码分析 空间复杂度为O(1)的解法?
阅读全文
摘要:eg1:只根据一个规则进行排序,比如我下面的数组是一组满减折扣的信息,我要按照满减的金额从小到大排序 代码: 输出: eg2:有时候需要对一个二维数组进行排序,自定义对应的排序规则,比如对一个班级里面的同学,先按身高降序排序,身高相同的,再按体重降序排序。。。 代码: 上面这个二维数组,先按年龄(a
阅读全文
摘要:题解1 - 双重for循环(TLE) 题 Two Strings Are Anagrams 的升级版,容易想到的方法为使用双重for循环两两判断字符串数组是否互为变位字符串。但显然此法的时间复杂度较高。还需要 O(n) 的数组来记录字符串是否被加入到最终结果中。 C++ 源码分析 复杂度分析 私有方
阅读全文
摘要:题解 题 Two Strings Are Anagrams | Data Structure and Algorithm 的变形题。题目意思是问B中的所有字符是否都在A中,而不是单个字符。比如B="AABC"包含两个「A」,而A="ABCD"只包含一个「A」,故返回false. 做题时注意题意。 既
阅读全文
摘要:LRU 目的:创建了一个哈希表作为缓存,每次查找一个用户的时候先在哈希表中查询,以此提高访问性能 LRU 全称 Least Recently Used,也就 是最近最少使用的意思,是一种内存菅理算法,最早应用于Linux操作系统 LRU算法基于一种假设:长期不被使用的数据,在未来被用到的几率也不大。
阅读全文
摘要:阶乘因式分解(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 阶乘因式分解(二) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 给定两个数n,m,其中m是一个素数。 将n(0<=n<=2^31)的阶乘分解质因数,求其中有多少个m。 注:^为求幂符号。
阅读全文
摘要:题解1 - hashmap 统计字频 判断两个字符串是否互为变位词,若区分大小写,考虑空白字符时,直接来理解可以认为两个字符串的拥有各不同字符的数量相同。对于比较字符数量的问题常用的方法为遍历两个字符串,统计其中各字符出现的频次,若不等则返回false. 有很多简单字符串类面试题都是此题的变形题。
阅读全文
摘要:三点顺序 时间限制:1000 ms | 内存限制:65535 KB 难度:3 三点顺序 时间限制:1000 ms | 内存限制:65535 KB 难度:3 现在给你不共线的三个点A,B,C的坐标,它们一定能组成一个三角形,现在让你判断A,B,C是顺时针给出的还是逆时针给出的? 如: 图1:顺时针给出
阅读全文
摘要:无界背包中的状态及状态方程已经不适用于01背包问题,那么我们来比较这两个问题的不同之处,无界背包问题中同一物品可以使用多次,而01背包问题中一个背包仅可使用一次,区别就在这里。我们将 K(ω)改为 K(i,ω) 即可,新的状态表示前 i 件物品放入一个容量为 ω的背包可以获得的最大价值。 现在从以上
阅读全文
摘要:小猴子下落 时间限制:3000 ms | 内存限制:65535 KB 难度:3 小猴子下落 时间限制:3000 ms | 内存限制:65535 KB 难度:3 有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个
阅读全文
摘要:最大公约数(GCD, Greatest Common Divisor) 常用的方法为辗转相除法,也称为欧几里得算法。不妨设函数gcd(a, b)是自然是a, b的最大公约数,不妨设a > b, 则有 a=b×p+qa =b×p+q, 那么对于gcd(b, q)则是b和q的最大公约数,也就是说gcd(
阅读全文
摘要:在计算机科学中,分治法是一种很重要的算法。分治法即『分而治之』,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个思想是很多高效算法的基础,如排序算法(快速排序,归并排序)等。 分治法思想 分治法所能
阅读全文
摘要:二分搜索是一种在有序数组中寻找目标值的经典方法,也就是说使用前提是『有序数组』。非常简单的题中『有序』特征非常明显,但更多时候可能需要我们自己去构造『有序数组』。下面我们从最基本的二分搜索开始逐步深入。 一、lower/upper bound 定义 lower bound 为在给定升序数组中大于等于
阅读全文
摘要:懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3
阅读全文
摘要:无聊的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 无聊的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3
阅读全文
摘要:蛇形填数 时间限制:3000 ms | 内存限制:65535 KB 难度:3 蛇形填数 时间限制:3000 ms | 内存限制:65535 KB 难度:3
阅读全文
摘要:会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 会场安排问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 思路:一开始搞混了,又是开始时间和结束时间,想多了,还去考虑开始时间一样,消耗的时间不一样的问题,其实想法一开始就错误了。 使用结构体,
阅读全文
摘要:孪生素数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述写一个程序,找出给出素数范围内的所有孪生素数的组数。一般来说,孪生素数就是指两个素数距离为2,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相
阅读全文

浙公网安备 33010602011771号