查找
文章平均质量分 81
jiyanfeng1
喜欢算法和编程的工科男
展开
-
两个排序数组的中位数
给你两个排序数组,大小都是n。找到两个数组归并后的中位数。见leetcode。Question: There are 2 sorted arrays A and B of size n each. Write an algorithm to find the median of the array obtained after merging the above 2 arrays(i.e.原创 2013-02-28 00:21:10 · 2065 阅读 · 0 评论 -
Find duplicates in an array
Find duplicates in an array of length n. The array values are in the range of [1, n-1].思路:可以用bucket sort 先对数组排序,然后扫描排序后的数组,即可知道重复值。相关问题:[LeetCode] 找到第一个不存在的正整数 First Missing Positive原创 2015-07-15 06:29:48 · 537 阅读 · 0 评论 -
[LeetCode] 找到第一个不存在的正整数 First Missing Positive
给定一个未排序的整数数组,找到最小的且不存在于该数组的正整数。例如,[-1, 2, 4, 3]中,1是最小的且不存在于该数组的正整数。思路:对于数组中的每一个元素arr[i],如果 0 最后,对数组 arr 重新扫描一边,如果 arr[i] != i+1, i+1 就是所求的正整数。代码如下:#include using namespace std;int solve原创 2013-02-02 06:08:13 · 1382 阅读 · 0 评论 -
只出现一次的数
一个数组中,一个数字只出现了一次,其余数字都出现了三次。找出只出现一次的数字。思路:计算机是用二进制表示数字。如果我们把所有数字的第 ith 个bit是1的个数除以3,那么只会有两个结果 0 或 1. 这个结果就是那个single number在第i个bit上的值。一个直接的实现就是用大小为 32的数组来记录所有 位上的和。int singleNumber(int A[], int n原创 2014-12-02 10:33:18 · 560 阅读 · 0 评论 -
有序矩阵中查找第k小的元素 Kth smallest element in a row-wise and column-wise sorted 2D array
有序矩阵中查找第k小的元素 Kth smallest element in a row-wise and column-wise sorted 2D array转载 2014-11-23 04:31:01 · 2081 阅读 · 0 评论 -
与二分搜索相关的几个问题
在先升后降的数组中查找 Search for an element in an array which has elements who’s values are first increasing 在旋转过的排序数组中查找 Search in a rotated array在排序数组中查找某个值出现的次数,元素可以重复出现。原创 2014-11-29 05:12:29 · 781 阅读 · 0 评论 -
The kth largest element in max-heap 最大堆的第k大元素
给定一个最大堆,找出第k大的节点。解法:建一个最小堆 minHeap来解决此题. 1 取最大堆的根节点,放入minHeap; 2 移除minHeap的根节点,并把该根节点在最大堆的两个子节点插入minHeap(插入过程保证heap的性质); 3 回到1.2 步。minHeap的节点数在不断增加,但是不会超过2k。minHeap插入节点的复杂度是原创 2015-07-16 02:59:03 · 1576 阅读 · 1 评论 -
求三个数的中数 find median of three numbers
int medianOfThreeNums(int A, int B, int C){ if ((A - B) * (C - A) >= 0) return A; else if ((B - A) * (C - B) >= 0) return B; else return C; }原创 2015-07-16 11:31:22 · 1228 阅读 · 1 评论 -
[LeetCode] Best Time to Buy and Sell Stock II
Say you have an array for which the ith element is the price of a given stock on day i. Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one a原创 2014-12-03 07:26:52 · 655 阅读 · 0 评论 -
Find maximum repeating number
给你一个长度是n的整数数组,数组中数字的范围是 [0, k-1] , k 满足 k思路1:用计数排序的方法,把数组排序,然后找到最大的重复出现的数字。思路2:假如给定arr[] = {2, 3, 3, 5, 3, 4, 1, 7}, k = 8, n = 8。那么,Iterate though input array arr[], for every原创 2015-08-03 02:32:47 · 508 阅读 · 0 评论 -
[LeetCode] Best Time to Buy and Sell Stock VI
相关问题:给你一个数组,数组的每个元素表示每天的stock价格,你最多可以进行k次交易,两次交易不能在时间上重叠,也就是说,你必须先卖掉股票,才能再买入股票。求可以获得的最大利润。 思路:利用动态规划。这里我们需要两个递推公式来分别更新两个变量local和global,参见网友Code Ganker的博客,我们其实可以求至少k次交易的最大利润。我们定义local[i][j]为在到达第i原创 2015-08-03 05:16:40 · 564 阅读 · 0 评论 -
[LeetCode] Best Time to Buy and Sell Stock III
相关问题:[LeetCode] Best Time to Buy and Sell Stock II给你一个数组,数组的每个元素表示每天的stock价格,你最多可以进行2次交易,两次交易不能在时间上重叠,也就是说,你必须先卖掉股票,才能再买入股票。求可以获得的最大利润。该问题还可以扩展为:把最多2次交易的条件,改成最多k次交易。相关问题:原创 2015-08-03 03:34:52 · 547 阅读 · 0 评论 -
[LeetCode] 01矩阵中最大矩形 Maximal Rectangle
在一个M * N的矩阵中,所有的元素只有0和1, 找出只包含1的最大矩形。例如:图中是一个4 × 6的矩形,画出红色的是我们要找到的区域。仔细观察发现:因为我们要找的是矩形,所以它一定是以 某个行元素开始的,如果枚举行的时候,我们会发现:对于第一行: 对于第二行:第三行:第四行: 这样的话,原创 2012-10-14 00:10:00 · 20273 阅读 · 1 评论 -
求逆序数
求逆序数 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。现在,给你一个N个元素的序列,请你判断出它的逆序数是多少。比如 1 3 2 的逆序数就是1。采用分治法+归并排序的思路:左表初始为[l,m]而右表为[m + 1, r],两个表各有一个指针i和j,因此在任意时刻左表为[i,m]而右表为[原创 2012-09-24 11:24:01 · 784 阅读 · 0 评论 -
快速选择(quick select) + 线性时间选择(linear-time select) - 求出n个数中第k大的数
利用快速排序中partition函数,很容易求出n个数中第k大的数,因此在划分后如下图。左半(包括q)有j = q - p + 1个元素。如果k j,需要在右半找第k - j大元素。可以证明,期望时间复杂度为O(n)。int partition ( int p , int q){ int x = a[p], i = p; for(j = p +1; j <= q;原创 2013-01-26 06:48:47 · 9370 阅读 · 0 评论 -
在排序数组中找到第k个元素 find the k-th element in two sorted arrays
在排序数组中找到第k个元素 find the k-th element in two sorted arrays给定两个数组A和B,长度分别是m和n。找出把A和B合并成一个排序数组后的第k个元素。假设A和B中没有重复元素。下面给出一个时间复杂度是Lg(m)+Lg(n)的算法。We try to approach this tricky problem by comparing翻译 2014-12-01 06:47:04 · 1171 阅读 · 0 评论 -
数组中三个只出现一次的数字
此文转自:http://zhedahht.blog.163.com/blog/static/25411174201283084246412/此问题的相关问题:数组中两个只出现一次的数字:http://blog.csdn.net/jiyanfeng1/article/details/8037807题目:一个数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一转载 2012-10-17 12:06:32 · 2809 阅读 · 0 评论 -
数组中只出现一次的数字
本文转自:http://zhedahht.blog.163.com/blog/static/2541117420071128950682/题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:这是一道很新颖的关于位运算的面试题。首先我们考虑这个问题的一个简单版本:一个数组里除了一个转载 2012-10-03 11:10:34 · 689 阅读 · 0 评论 -
[LeetCode] 比n小的所有素数
找到所有比 n 小的素数。思路详见:http://en.wikipedia.org/wiki/Sieve_of_eratosthenes/* Generate a prime list from 0 up to n, using The Sieve of Erantosthenesparam n The upper bound of the prime list (includi...原创 2013-02-27 09:10:36 · 1218 阅读 · 0 评论 -
[LeetCode] 在矩阵中查找字符串 Search a string in a matrix of chars
在矩阵中查找字符串 Search a string in a matrix of chars [Leetcode 124: word search]Given a 2D board and a word, find if the word exists in the grid.The word can be constructed from letters of sequent原创 2014-11-30 06:27:11 · 1923 阅读 · 0 评论 -
[LeetCode] 无序数组中的最长连续数列 The Longest Consecutive Sequence in an unsorted array
无序数组中的最长连续数列 The Longest Consecutive Sequence in an unsorted array给你一个无序的数组,{5, 7, 3, 4, 9, 10, 1, 15, 1, 3, 12, 2, 11},那么最长的连续数列是{1, 2, 3, 4, 5}。思路:Dump everything to a hash set.Now g原创 2013-02-27 09:32:21 · 2249 阅读 · 0 评论 -
[LeetCode] Search in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). You are given a target value to search. If found in the array return it原创 2014-12-08 11:47:17 · 632 阅读 · 0 评论 -
[LeetCode] Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted from left to right.The first integer of each原创 2014-12-09 06:09:44 · 458 阅读 · 0 评论 -
找出整数的开方的floor -- 找出最近的平方数
Implement a fast integer square root function that takes in an integer and returns another integer that is the floor of the square root of the input.用二分搜索的思想,但是要注意本算法的递归搜索区间和二分搜索递归区间的区别。下面的正确性已经得到原创 2014-11-28 04:41:04 · 1276 阅读 · 0 评论 -
[LeetCode] Search Insert Position
相关问题1:Find a number in the array having least difference with the given number (n)Given a sorted array and a target value, return the index if the target is found. If not, return the index where ...原创 2014-12-26 14:02:04 · 549 阅读 · 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 评论 -
[LeetCode] Search for a Range
Given a sorted array of integers, find the starting and ending position of a given target value. Your algorithm's runtime complexity must be in the order of O(log n). If the target is not found in the原创 2014-12-26 14:40:50 · 530 阅读 · 0 评论 -
median of two sorted array
转自:http://blog.csdn.net/zxzxy1988/article/details/8587244题目是这样的:给定两个已经排序好的数组(可能为空),找到两者所有元素中第k大的元素。另外一种更加具体的形式是,找到所有元素的中位数。本篇文章我们只讨论更加一般性的问题:如何找到两个数组中第k大的元素?不过,测试是用的两个数组的中位数的题目,Leetcode第4题 Median转载 2014-12-01 07:45:56 · 1073 阅读 · 0 评论 -
[LeetCode] 丑数 Ugly Number II
题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。分析:这是一道在网络上广为流传的面试题,据说google曾经采用过这道题。根据定义可知,后面的丑数肯定是前面已知丑数乘以2,3,5得到的。我们假设一个数组中已经有若干丑数,并且这些丑数是按顺序排列...原创 2012-10-03 10:16:05 · 1274 阅读 · 0 评论