题目: 给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。 如果目标值不在数组中,则返回[-1, -1] 思路: 1、直接遍历数组,复杂度O(n) 2、二分查找 先通过二分查找,找到ta…
分类:数组相关算法
(算法)Trapping Rain Water I
题目: Given n non-negative integers representing an elevation map where the width of each bar is 1, co…
( 笔试题)只出现一次的数
题目: 1、给定一数组,数组中的数字均为int类型,除了一个数出现一次,其他都出现了两次,请找出这个数; 2、给定一数组,数组中的数字均为int类型,除了一个数出现一次,其他都出现了三次,请找出这个数; 思路: 这两道题…
(笔试题)区间最大重叠
题目: 在一维坐标轴上有n个区间段,求重合区间最长的两个区间段。 区间段的数据结构定义如下: struct Interval{ int start; int end; }; 思路: 首先按照区间的左端点即start对n个…
(算法)Partition方法求数组第k大的数
如题,下面直接贴出代码: #include <iostream> using namespace std; int Partition(int* A,int left,int right){ int key=…
(笔试题)把一个整数数组中重复的数字去掉
题目: 把一个整数数组中重复的数字去掉,并输出剩下的不重复的元素。(要求不能开辟新空间) 思路: 先排序,然后遍历数组比较,详见代码 代码: #include <iostream> #include <…
(笔试题)如何判断数组中是否存在重复元素
题目: 假设数组a有n个元素,元素的取值范围为1~n,如何判定数组是否存在重复元素? 思路: 方法1: 数组排序,比较相邻元素是否相等; 时间复杂度:O(nlogn),空间复杂度:O(1) 方法2: 使用bitmap(位…
(算法:二分查找)在排序数组中,找出给定数字出现的次数
题目: 在排序数组中,找出给定数字出现的次数 思路: 既然出现排序数组,很容易想到二分查找,时间复杂度为O(logn); 先通过二分查找找到最左边出现该数字的下标left(如果没找到,则返回-1),然后通过二分查找找到最…
(算法)求1到1亿间的质数或素数
题目: 求1到1亿间的质数或素数 思路: 什么是质数? 质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他…