数组
文章平均质量分 78
jiyanfeng1
喜欢算法和编程的工科男
展开
-
数组中出现次数超过一半的数字
题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。分析:这是一道广为流传的面试题,包括百度、微软和Google在内的多家公司都曾经采用过这个题目。要几十分钟的时间里很好地解答这道题,除了较好的编程能力之外,还需要较快的反应和较强的逻辑思维能力。看到这道题,我们马上就会想到,要是这个数组是排序的数组就好了。如果是排序的数组,那么我们只要遍历一次就可以统计出每个数字出转载 2012-10-02 02:25:01 · 755 阅读 · 0 评论 -
find the largest subset of consecutive integers 找到最大的连续整数子集
find the largest subset of consecutive integers 找到最大的连续整数子集原创 2014-11-23 14:12:19 · 765 阅读 · 0 评论 -
在排序数组中的出现次数 Count the number of occurrences in a sorted array
在排序数组中的出现次数 Count the number of occurrences in a sorted array给定一个排序数组翻译 2014-11-24 02:36:26 · 633 阅读 · 0 评论 -
把零移动到数组的一端 Move all zeroes to end of array
把零移动到数组的一端 Move all zeroes to end of array给定一个数组,把数组中所有的 0 移动到数组的右端,并保持其他非零元素的相对顺序。例如数组 {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0}, 把 0 移动到右端,并保持相对顺序,结果是{1, 9, 8, 4, 2, 7, 6, 0, 0, 0, 0}.下面给出一个O(n)算法,空间复杂度翻译 2014-11-29 10:57:21 · 659 阅读 · 0 评论 -
子序列的最大几个值 maximum k elements in a subarray
子序列的最大几个值 maximum k elements in a subarray原创 2014-11-24 07:18:02 · 579 阅读 · 0 评论 -
Find the top k sums of two sorted arrays
Given two arrays sorted in ascending order, we want to find the kth largest sum such that one element is picked from 1st array and the second element is picked from the 2nd array. I am looking for a转载 2012-10-16 13:49:00 · 3455 阅读 · 0 评论 -
子数组和问题,和被10整除
类似问题:子数组和被所有元素的个数整除。给你一个数组,要求找出一个子数组,使得该子数组的和可以被10整除。例如,下面的数组中,子数组A[3]+A[4]+A[9] mod 10 = 0.思路:用动态规划。状态空间定义如下:s(m,k)表示数组A的前m个元素中,是否存在一个子数组,该子数组的和除以10得到的余数是k。s(m,k)=true表示存在;s(m,k)=false表示不原创 2013-01-31 03:46:53 · 1795 阅读 · 0 评论 -
[LeetCode] Remove Duplicates From Sorted Array II
Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2,2,3].原创 2014-12-21 21:48:08 · 526 阅读 · 0 评论 -
直方图最大矩形问题(Largest Rectangle in Histogram)
有n个非负整数,代表直方图中每个bar的高度,每个bar的宽度是1。请找出直方图中最大矩形的面积。上面的直方图可以表示成一个数组{2,1,5,6,2,3}。最大矩形面积是10.思路:The point of this algorithm is to maintain a stack where higher element is always greater or翻译 2012-10-13 13:52:20 · 8413 阅读 · 1 评论 -
左旋转字符串 left rotate string
左旋转字符串题目:字符串的左旋转操作:把字符串前面的若干字符移到字符串的后面。例如:字符串abcdefg左旋转2位得到cdefgab。请实现左旋转字符串函数,要求对于长度为n的字符串,时间复杂度为O(n),辅助内存为O(1)。算法思想:可以利用三次字符串反转操作,来达到左旋转字符串的目的:1.反转字符串的前半段;2.反转字符串的后半段;3.反转整个字符串。原创 2012-08-24 04:46:21 · 5663 阅读 · 0 评论 -
Find subarray with given sum
Given an unsorted array of nonnegative integers, find a continous subarray which adds to a given number. Examples:Input: arr[] = {1, 4, 20, 3, 10, 5}, sum = 33Ouptut: Sum found between indexes 2 a原创 2015-01-15 05:32:58 · 793 阅读 · 0 评论 -
两个排序的数组,找到第k大的元素
给你两个排序的数组,A和B,大小分别是 m 和 n。找到把 A和B 归并后的数组中,第k大的元素。(假定没有重复元素)。The trivial way, O(m + n):Merge both arrays and the k-th smallest element could be accessed directly. Merging would require extra sp转载 2013-02-28 00:12:23 · 3131 阅读 · 0 评论 -
[LeetCode] 最大容器问题 Container with Most Water
给定一个非负整数数组a1,a2,a3,...,an,每个元素代表一个坐标(1,a1),...,(i,ai),...,(n,an)。从(i,0)到(i,ai)画条直线。找出两条直线,使得这两条直线和x轴形成的容器可以装最多的水。思路:其实,本问题就是要求找到两个下标i和j,使(i-j)*min(ai,aj)最大。我们注意到,如果aiaj,i算法从i=1, j=n开始扫描,最后当i=j时就原创 2012-10-14 23:55:31 · 4226 阅读 · 0 评论 -
求逆序数
求逆序数 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。现在,给你一个N个元素的序列,请你判断出它的逆序数是多少。比如 1 3 2 的逆序数就是1。采用分治法+归并排序的思路:左表初始为[l,m]而右表为[m + 1, r],两个表各有一个指针i和j,因此在任意时刻左表为[i,m]而右表为[原创 2012-09-24 11:24:01 · 780 阅读 · 0 评论 -
[LeetCode] Trapping Rain Water 搜集雨水
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. For example, given [0,1,0,2,1,0,1,3,2,1,2,1], ret原创 2014-12-03 12:35:03 · 735 阅读 · 0 评论 -
一个int数组, 比如 array[],里面数据无任何限制,要求求出 所有这样的数array[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现
分析一:我们在从左到右扫描数组的时候,能够维护一个candidate的数组,这个数组存储了到目前为止找到的最大值。在我们从右往左扫描的时候,用一个临时变量tmp存储到目前为止找到的最小值,如果此最小值和candidate数组对应位置的最大值相等,那么说明我们找到了一个符合条件的数组元素。分析二:(转自http://blog.chinaunix.net/uid-1844931原创 2012-09-23 02:56:52 · 1803 阅读 · 0 评论 -
求数组元素最大差值
一、问题描述:如果一个人在知道了股票每天的股价以后,对该股票进行投资,问什么时候买入和卖出(注意这里有先后顺序)能取得最大的收益。其数学模型就是,给定一个整数数组,a[1],a[2],...,a[n],每一个元素a[i]可以和它左边(a[i-1],a[i-2],...,a[0])元素做差,求这个数组中最大的差值。原创 2014-11-21 06:13:36 · 2580 阅读 · 0 评论 -
相同数目的0和1的子数组 Largest subarray with equal number of 0s and 1s
相同数目的0和1的子数组 Largest subarray with equal number of 0s and 1sFollowing is a solution that uses O(n) extra space and solves the problem in O(n) time complexity.Let input array be arr[] of size n and转载 2014-11-26 07:57:43 · 786 阅读 · 0 评论 -
Find the Minimum length Unsorted Subarray, sorting which makes the complete array sorted
Find the Minimum length Unsorted Subarray, sorting which makes the complete array sorted转载 2014-11-17 00:41:56 · 573 阅读 · 0 评论 -
把数组排成最小的数
题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。 思路一:(转自:http://blog.csdn.net/wcyoot/article/details/6437389)算法分析:将每个正整数转换为字符串,然后建立一个以转载 2012-10-03 05:09:47 · 747 阅读 · 0 评论 -
有一个整数数组,请求出两两之差绝对值最小的值,记住,只要得出最小值即可,不需要求出是哪两个数。
方法一:先排序,然后比较相邻两数的差的绝对值,最后就可以得到最小的绝对值。如果用计数排序,复杂度是n。方法二:设这个整数数组是a1,a2,...,an构造数组B=(b1,b2,...,bn-1)b1 = a1-a2,b2 = a2-a3,b3 = a3-a4,...bn-1 = an-1 - an那么原数组中,任意两整数之差ai-aj(1B中原创 2012-10-10 23:40:12 · 3901 阅读 · 2 评论 -
在旋转后的排序数组中查找
问题:已知一个排过序的数组被旋转了几位(但不知道具体旋转了几位),例如,{0,1,2,3,4,5,6,7}变成了{3,4,5,6,7,0,1,2},。现要求你查找某一个元素,如果找到了,就返回下标,如果没找到,返回-1。假设不存在重复元素。解答:我们可以用二叉搜索。每次都把数组分成两半,判别哪一半是排过序的。如果待查元素在排过序的那一半,那么用二叉搜索。如果在另一半,那么我们递归地在这一半里继原创 2012-10-13 13:31:08 · 1961 阅读 · 0 评论 -
最大子段和问题
最大子段和问题(Maximum Interval Sum) 经典的动态规划问题,几乎所有的算法教材都会提到.本文将分析最大子段和问题的几种不同效率的解法,以及最大子段和问题的扩展和运用. 一.问题描述 给定长度为n的整数序列,a[1...n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.转载 2012-10-11 00:10:14 · 5501 阅读 · 0 评论 -
幸运数组/连续子数组被k整除
http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=13501350.幸运数组Time Limit: 2000 MS Memory Limit: 65536 KTotal Submissions: 221 (61 users) Accepted: 56 (44 users)[ My Solution]转载 2012-10-18 08:43:06 · 4104 阅读 · 0 评论 -
有1000000头奶排着队,已知每只奶牛的身高,每只奶牛能看到自己前面比自己矮的奶牛,直到被一只比自己高的奶牛挡住。求出每只奶牛分别能看到几只前面的奶牛。
有1000000头奶排着队,已知每只奶牛的身高,每只奶牛能看到自己前面比自己矮的奶牛,直到被一只比自己高的奶牛挡住。求出每只奶牛分别能看到几只前面的奶牛。 思路:设int数组cow里存有每个奶牛的身高。int数组count里存每个奶牛能看到前面的奶牛的个数,这个数组初始化为0.假设count[i]已经求出。如果cow[i-1]cow[i],那么count[i-1]至原创 2012-11-21 03:01:56 · 1047 阅读 · 0 评论 -
找出所有和为0的四元组4-Sum Problem
相关问题:Finding Longest Arithmetic Progressions给定一个长度是n的整数数组,是否存在4个元素a,b,c,d,使得a+b+c+d=target,target为一个给定的整数?INPUT: = {1, 0, -1, 0, -2, 2}, and target = 0OUTPUT: (-1, 0, 0, 1), (-2, -1, 1, 2) and原创 2012-10-16 01:17:43 · 1754 阅读 · 0 评论 -
找出最长的等差数列
这篇文章的来源:Finding Longest Arithmetic Progressions - by Jeff Erickson - je ffe@uiuc.edu - http://www.uiuc.edu/~je e1 IntroductionThis paper describes efficient algorithms for finding the longest ari翻译 2012-12-17 07:25:16 · 987 阅读 · 0 评论 -
用一个数组实现三个栈
int stackSize = 300;int indexUsed = 0;int[] stackPointer = { -1, -1, -1 };StackNode[] buffer = new StackNode[stackSize * 3];void push(int stackNum, int value) { int lastIndex = stackPointer[stac原创 2013-01-15 14:58:52 · 1537 阅读 · 0 评论 -
子数组和问题,和被元素个数整除
类似问题:子数组和被10整除。给你一个数组,要求找出一个子数组,使得该子数组的和可以被整个数组的元素个数整除。例如,下面的数组有10个元素,子数组A[3]+A[4]+A[9] mod 10 = 0.思路:设prefix_sum[j] = ( A[0] + A[1] + ... + A[j] ) mod n. 其中,n是A中元素的个数。那么case1:prefix_原创 2013-01-31 03:55:12 · 2293 阅读 · 0 评论 -
寻找最长递增子序列
最长递增子序列(不一定连续),请看这里。给定一个长度为n的数组,求它的最长连续递增子序列。思路:用bruteforce的方法,复杂度是O(n).可是我们可以观察到,如果A[i-1]>A[i],而且到目前为止最长递增子序列长度是L,那么我们可以从A[i+L]向A[i]的方向查找,看是否是递减数列,如果不是那么我们就可以停止查找。这个方法的最差复杂度仍是O(n),但是最好情原创 2012-10-11 00:05:20 · 1047 阅读 · 0 评论 -
[LeetCode] Find a number in the array having least difference with the given number (n)
Problem/* Facebook* Given - a number (n) and a sorted array* Find a number in the array having least difference with the given number (n).* */From site:https://sites.google.com/site/...转载 2014-03-08 09:18:06 · 636 阅读 · 0 评论 -
[LeetCode] Insert Interval 插入区间
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initially sorted according to their start times.Exam原创 2015-08-02 23:18:36 · 595 阅读 · 0 评论