![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数组
文章平均质量分 59
小马哥MAX
刷题记录BLOG
展开
-
【两次过】Leetcode 204: 计数质数
*统计所有小于非负整数n的质数的数量。**示例:**输入:10*输出:4*解释:小于10的质数一共有4个,它们是2,3,5,7。解题思路:不能想当然采用一个一个的去处理,否则时间复杂度为O(n^2)。首先从 2 开始,我们知道 2 是一个质数,那么 2 × 2 = 4, 3 × 2 = 6, 4 × 2 = 8... 都不可能是质数了。然后我们发现 3 也是质数,那么 3 × 2 = 6, 3 × 3 = 9,...原创 2020-08-31 20:24:02 · 120 阅读 · 0 评论 -
【一次过】Leetcode 38. 外观数列
给定一个正整数 n(1 ≤n≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1 ” ,记作 21描述前一项,这个数是 21 即 “一个 ...原创 2020-07-04 20:09:40 · 260 阅读 · 0 评论 -
【一次过】【双指针】和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。解题思路:双指针。一前一后,向中间靠拢数列满足递增,设两个头尾两个指针i和j,若ai + aj == sum,就是答案(相差越远乘积越小)若ai + aj > sum,aj...原创 2019-05-06 10:18:30 · 104 阅读 · 0 评论 -
【三次过】【2018网易】【二分查找】牛牛找工作
为了找到自己满意的工作,牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,牛牛依然使用自己的标准来帮助小伙伴们。牛牛的小伙伴太多了,于是他只好把这个任务交给了你。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含两个正整数,分别表示工作的数量N(N<...原创 2019-05-06 21:49:43 · 131 阅读 · 0 评论 -
【一次过】扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K...原创 2019-05-07 09:53:02 · 211 阅读 · 0 评论 -
【两次过】构建乘积数组
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。解题思路:B[i]的值可以看作下图的矩阵中每行的乘积。下三角用连乘可以很容求得,上三角,从下向上也是连乘。因此我们的思路就很清晰了,先算下三角中的连乘,即我们先算出B[i...原创 2019-05-09 19:59:59 · 97 阅读 · 0 评论 -
【两次过】操作序列
题目描述小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:1、将a_i放入b序列的末尾2、逆置b序列小易需要你计算输出操作n次之后的b序列。输入描述:输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。输出...原创 2019-05-15 10:00:43 · 292 阅读 · 0 评论 -
【两次过】圆圈中最后剩下的数
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....原创 2019-05-08 09:12:57 · 85 阅读 · 0 评论 -
【两次过】【2018爱奇艺】幸运子序列
题目描述牛牛得到一个长度为n的整数序列V,牛牛定义一段连续子序列的幸运值为这段子序列中最大值和次大值的异或值(次大值是严格的次大)。牛牛现在需要求出序列V的所有连续子序列中幸运值最大是多少。请你帮帮牛牛吧。输入描述:第一行一个整数n,即序列的长度。(2<= n <= 100000)第二行n个数,依次表示这个序列每个数值V[i], (1 ≤ V[i] ≤ 10^8)且保证...原创 2019-05-21 09:33:50 · 321 阅读 · 0 评论 -
【两次过】Lintcode 539. 移动零
给一个数组nums写一个函数将0移动到数组的最后面,非零元素保持原数组的顺序样例给出nums=[0, 1, 0, 3, 12], 调用函数之后,nums=[1, 3, 12, 0, 0].解题思路1: 双指针法。一个指针指向非零元素,一个指针指向当前元素。将非零元素依次交换即可。public class Solution { /** ...原创 2018-06-22 19:42:24 · 127 阅读 · 0 评论 -
【两次过】Lintcode 407:加一
给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。该数字按照数位高低进行排列,最高位的数在列表的最前面。样例给定[1,2,3]表示 123, 返回[1,2,4].给定[9,9,9]表示 999, 返回[1,0,0,0].解题思路: 一开始想到将数组元素转化为数字再加一,最后转换到数组,实现太复杂,而且时间与空间复杂度过高。...原创 2018-06-13 19:14:58 · 163 阅读 · 0 评论 -
【两次过】Lintcode 46:主元素
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。样例样例 1:输入: [1, 1, 1, 1, 2, 2, 2]输出: 1样例 2:输入: [1, 1, 1, 2, 2, 2, 2]输出: 2挑战要求时间复杂度为O(n),空间复杂度为O(1)注意事项你可以假设数组非空,且数组中总是存在主元素。思路:...原创 2018-01-28 22:06:56 · 236 阅读 · 0 评论 -
【两次过】Lintcode 47. 主元素 II
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。样例给出数组[1,2,1,2,1,3,3]返回 1挑战要求时间复杂度为O(n),空间复杂度为O(1)。注意事项数组中只有唯一的主元素解题思路1:一开始就想到使用哈希表存储,然后查找即可,时间复杂度为O(n),空间复杂度为O(n)。class Solution {publ...原创 2018-08-17 11:33:18 · 177 阅读 · 0 评论 -
【两次过】Lintcode 144. 交错正负数
给出一个含有正整数和负整数的数组,重新排列成一个正负数交错的数组。样例给出数组[-1, -2, -3, 4, 5, 6],重新排序之后,变成[-1, 5, -2, 4, -3, 6]或者其他任何满足要求的答案挑战原地完成,没有额外的空间注意事项不需要保持正整数或者负整数原来的顺序。解题思路1:先用partition操作将数组分为负数与正数两部分。注意,根据是正数...原创 2018-08-05 10:53:39 · 329 阅读 · 0 评论 -
【两次过】Lintcode 508. 摆动排序
给你一个没有排序的数组,请将原数组就地重新排列满足如下性质nums[0] <= nums[1] >= nums[2] <= nums[3]....样例给出数组为nums=[3, 5, 2, 1, 6, 4]一种输出方案为[1, 6, 2, 5, 3, 4]注意事项请就地排序数组,也就是不需要额外数组解题思路1:我们可以先将数组排序,这时候...原创 2018-08-12 19:11:28 · 163 阅读 · 0 评论 -
【两次过】【双指针】和为S的连续正数序列
题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数...原创 2019-05-06 09:55:14 · 116 阅读 · 0 评论 -
【两次过】数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路:可以用位运算实现,如果将所有所有数字相异或,则最后的结果肯定是那两个只出现一次的数字异或的结果,所以根据异或的结果1所在的最低位,把数字分成两半,每一半里都还有只出现一次的数据和成对出现的数据,这样继续对每一半相异或则可以分别求出两个只出现一次的数字//num1,num2...原创 2019-05-06 09:25:39 · 132 阅读 · 0 评论 -
【两次过】【Comparator】Lintcode 613. 优秀成绩
每个学生有两个属性id和scores。找到每个学生最高的5个分数的平均值。样例例1:输入: [[1,91],[1,92],[2,93],[2,99],[2,98],[2,97],[1,60],[1,58],[2,100],[1,61]]输出:1: 72.402: 97.40例2:输入:[[1,90],[1,90],[1,90],[1,90],[1,90]...原创 2019-04-30 10:52:40 · 179 阅读 · 0 评论 -
【两次过】Lintcode 56. 两数之和
给一个整数数组,找到两个数使得他们的和等于一个给定的数target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到n-1。样例Example1:给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].Example2:给出 numbers = [15, 2, 7,...原创 2019-04-26 09:42:09 · 304 阅读 · 0 评论 -
【两次过】【二分查找】Lintcode 447. 在大数组中查找
给一个按照升序排序的非负整数数组。这个数组很大以至于你只能通过固定的接口ArrayReader.get(k)来访问第k个数(或者C++里是ArrayReader->get(k)),并且你也没有办法得知这个数组有多大。找到给出的整数target第一次出现的位置。你的算法需要在O(logk)的时间复杂度内完成,k为target第一次出现的位置的下标。如果找不到target,返回-1。...原创 2019-04-26 10:15:37 · 896 阅读 · 0 评论 -
【一次过】Lintcode 461. 无序数组K小元素
找到一个无序数组中第K小的数样例样例 1:输入: [3, 4, 1, 2, 5], k = 3输出: 3样例 2:输入: [1, 1, 1], k = 2输出: 1挑战O(nlogn)的算法固然可行, 但如果你能 O(n) 解决, 那就非常棒了.解题思路1:快排的partition过程可定位到元素的位置,通过类似二分查找的定位方式找到第k小的数。...原创 2019-04-27 09:17:29 · 365 阅读 · 0 评论 -
【两次过】【双指针】Lintcode 533. 两数和的最接近值
给定整数数组num,从中找到两个数字使得他们和最接近target,返回两数和与target的差的绝对值。样例样例1输入: nums = [-1, 2, 1, -4] 并且 target = 4输出: 1解释:最小的差距是1,(4 - (2 + 1) = 1).样例2输入: nums = [-1, -1, -1, -4] 并且 target = 4输出: 6解...原创 2019-04-28 10:14:12 · 183 阅读 · 0 评论 -
【两次过】【归并】Lintcode 486. 合并k个排序数组
将k个有序数组合并为一个大的有序数组。样例样例 1:输入: [ [1, 3, 5, 7], [2, 4, 6], [0, 8, 9, 10, 11] ]输出: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]样例 2:输入: [ [1,2,3], [1,2] ]输出: [1,1,...原创 2019-04-28 09:58:21 · 2796 阅读 · 1 评论 -
【两次过】【双指针】Lintcode 587. 两数之和 - 不同组成
给一整数数组, 找到数组中有多少组不同的元素对有相同的和, 且和为给出的 target 值, 返回对数.样例Example 1:Input: nums = [1,1,2,45,46,46], target = 47 Output: 2Explanation:1 + 46 = 472 + 45 = 47Example 2:Input: nums = [1,1...原创 2019-04-28 10:31:23 · 364 阅读 · 0 评论 -
【两次过】【Comparator】把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。排序规则如下:若ab > ba 则 a > b,若a...原创 2019-05-04 09:11:31 · 100 阅读 · 0 评论 -
【一次过】Lintcode 610. 两数和 - 差等于目标值
给定一个整数数组,找到两个数的差等于目标值。index1必须小于index2。注意返回的index1和index2不是 0-based。样例例1:输入: nums = [2, 7, 15, 24], target = 5 输出: [1, 2] 解释:(7 - 2 = 5)例2:输入: nums = [1, 1], target = 0输出: [1, 2] 解...原创 2019-04-29 10:14:45 · 749 阅读 · 0 评论 -
【两次过】【归并排序】数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%1...原创 2019-05-05 09:20:00 · 139 阅读 · 0 评论 -
【两次过】【二分搜索】数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。解题思路:先通过二分查找找到该数字第一次出现的位置,再通过二分查找找到该数字最后一次出现的位置,最后返回两结果的差值即可。注意二分搜索左值和右值在边界处理上不同,特别是搜索右边界时,必须是while(l+1 < r),否则就会陷入死循环,原因是mid的值由于取(l+r)/2整数,永远偏向左方,所以搜索到最后总会l与mid重合,r在另...原创 2019-05-05 10:13:38 · 183 阅读 · 0 评论 -
【三次过】Lintcode 402. 连续子数组求和
给定一个整数数组,请找出一个连续子数组,使得该子数组的和最大。输出答案时,请分别返回第一个数字和最后一个数字的下标。(如果存在多个答案,请返回字典序最小的)样例样例 1:输入: [-3, 1, 3, -3, 4]输出: [1, 4]样例 2:输入: [0, 1, 0, 1]输出: [0, 3]解释: 字典序最小.解题思路:我们用sum来记录当前位置的累计和,...原创 2019-04-25 09:01:42 · 151 阅读 · 0 评论 -
【两次过】【双指针】Lintcode 382. 三角形计数
给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?样例Example 1:Input: [3, 4, 6, 7]Output: 3Explanation:They are (3, 4, 6), (3, 6, 7), (4, 6, 7)Example 2:Input...原创 2019-04-24 09:56:05 · 177 阅读 · 0 评论 -
【三次过】Lintcode 139. 最接近零的子数组和
给定一个整数数组,找到一个和最接近于零的子数组。返回第一个和最右一个指数。你的代码应该返回满足要求的子数组的起始位置和结束位置样例给出[-3, 1, 1, -3, 5],返回[0, 2],[1, 3],[1, 1],[2, 2]或者[0, 4]。挑战O(nlogn)的时间复杂度解题思路:这道题求的是和最接近于0的子序列,暴力做法应该是N*N的时间复杂度,但是不能AC...原创 2019-04-20 10:44:57 · 288 阅读 · 0 评论 -
【一次过】【2017美团】最大矩形面积
链接:https://www.nowcoder.com/questionTerminal/b0fbb688d01a4f2c8c17e5efd85d5824来源:牛客网给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。输入描述:输入包括...原创 2019-04-17 21:10:04 · 229 阅读 · 0 评论 -
【一次过】【双指针】Lintcode 443. 两数之和 II
给一组整数,问能找出多少对整数,他们的和大于一个给定的目标值。样例样例 1:输入: [2, 7, 11, 15], target = 24输出: 1解释: 11 + 15 是唯一的一对样例 2:输入: [1, 1, 1, 1], target = 1输出: 6挑战O(1) 额外空间以及 O(nlogn) 时间复杂度解题思路:双指针。先排序,一...原创 2019-04-26 09:11:43 · 100 阅读 · 0 评论