随笔分类 - c++
摘要:题解1 - 哈希表 题 Zero Sum Subarray | Data Structure and Algorithm 的升级版,这道题求子串和为 K 的索引。首先我们可以考虑使用时间复杂度相对较低的哈希表解决。前一道题的核心约束条件为 f(i1)−f(i2)=0,这道题则变为 f(i1)−f(i
阅读全文
摘要:题解1 - 两重 for 循环 题目中仅要求返回一个子串(连续)中和为0的索引,而不必返回所有可能满足题意的解。最简单的想法是遍历所有子串,判断其和是否为0,使用两重循环即可搞定,最坏情况下时间复杂度为 O(n^2), 这种方法显然是极其低效的,极有可能会出现 TLE. 下面就不浪费篇幅贴代码了。
阅读全文
摘要:最简单的方案,穷举所有可能的子串,判断子串是否为回文,使用一变量记录最大回文长度,若新的回文超过之前的最大回文长度则更新标记变量并记录当前回文的起止索引,最后返回最长回文子串。 C++: JAVA: 源码分析 使用left, right作为子串的起止索引,用于最后构造返回结果,避免中间构造字符串以减
阅读全文
摘要:字符串的回文判断问题,由于字符串可随机访问,故逐个比较首尾字符是否相等最为便利,即常见的『两根指针』技法。此题忽略大小写,并只考虑字母和数字字符。 C++: JAVA: 源码分析 两步走: 字符的判断尽量使用语言提供的 API 复杂度分析 两根指针遍历一次,时间复杂度 O(n), 空间复杂度 O(1
阅读全文
摘要:给定一个整数,从整数当中去掉k个数字,要求剩下数字形成的新整数尽可能小。 什么意思呢?让我们举几个栗子: 给定整数1593212,删去3个数字,新整数的最小情况是1212 给定整数30200,删去1个数字,新整数的最小情况是200 给定整数10,删去2个数字,新整数的最小情况是0 需要注意的是,给定
阅读全文
摘要:Question 题解 首先找到各个单词(以空格隔开),根据题目要求,单词应从后往前依次放入。正向取出比较麻烦,因此可尝试采用逆向思维——先将输入字符串数组中的单词从后往前逆序取出,取出单词后即翻转并append至新字符串数组。在append之前加入空格即可。 源码分析 空间复杂度为O(1)的解法?
阅读全文
摘要:题解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. 做题时注意题意。 既
阅读全文
摘要:阶乘因式分解(二) 时间限制: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:顺时针给出
阅读全文
摘要:小猴子下落 时间限制:3000 ms | 内存限制:65535 KB 难度:3 小猴子下落 时间限制:3000 ms | 内存限制:65535 KB 难度:3 有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有结点从左到右从上到下的编号为1,2,3,·····,2的D次方减1。在结点1处放一个
阅读全文
摘要:懒省事的小明 时间限制: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,近的不能再近的相邻素数。有些童鞋一看到题就开始写程序,不仔细看题,咱们为了遏制一下读题不认真仔细的童鞋,规定,两个素数相
阅读全文
摘要:一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3 一种排序 时间限制:3000 ms | 内存限制:65535 KB 难度:3
阅读全文
摘要:喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3 喷水装置(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:3
阅读全文

浙公网安备 33010602011771号