数组
Kavin_Liang
Stay hungry. Stay foolish
展开
-
LintCode 数组剔除元素后的乘积
本文转自:geeksforgeeks 数组剔除元素后的乘积给定一个整数数组A。 定义B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], 计算B的时候请不要使用除法。 样例 给出A=[1, 2, 3],返回 B为[6, 3, 2]solution: 如我们直接使用定义来求解的话,会重复计算很多的子乘积,因此我们可以使用数组来保存这些乘积在计算后面的翻译 2015-10-03 20:01:08 · 2144 阅读 · 0 评论 -
LintCode 两数之和
两数之和给一个整数数组,找到两个数使得他们的和等于一个给定的数target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是1到n,不是以0开头。 样例 numbers=[2, 7, 11, 15], target=9 return [1, 2] 注意 你可以假设只有一组答案。solution:方法一:使用map容器来存储对应的原创 2015-10-04 15:17:28 · 2054 阅读 · 2 评论 -
LintCode 丢失的第一个正整数
丢失的第一个正整数 给出一个无序的正数数组,找出其中没有出现的最小正整数。 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 挑战 只允许时间复杂度O(n)的算法,并且只能使用常数级别的空间。Solution: 方法一:一种最直接的方法就是对数组进行排序然后再查找.class Solution {public: /**原创 2015-10-04 16:46:01 · 2252 阅读 · 0 评论 -
LintCode 合并排序数组 II
合并排序数组 II合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A = [1, 2, 3, empty, empty] B = [4,5] 合并之后A将变成[1,2,3,4,5] 注意 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。方法一:开辟一个临时数组tmp来存放A中前面m个数字,那么就变成了归并tmp和B,把结果存放在Aclass Solut原创 2015-10-03 16:11:17 · 1596 阅读 · 0 评论 -
LintCode 删除排序数组中的重复数字
删除排序数组中的重复数字给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。 不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。原创 2015-10-03 14:43:48 · 1437 阅读 · 0 评论 -
lintCode 删除元素
删除元素给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。 元素的顺序可以改变,并且对新的数组不会有影响。 样例 给出一个数组 [0,4,4,0,0,2,4,4],和值 4返回 4 并且4个元素的新数组为[0,0,0,2]思路:这题很简单,保持两个索引 i , j 就好了 用 i 来表示不相同的数字, j 来遍历数组code :class Solution {public:原创 2015-10-03 11:04:59 · 773 阅读 · 0 评论 -
LintCode 三数之和
1. 三数之和给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组。 样例 如S = {-1 0 1 2 -1 -4}, 你需要返回的三元组集合的是: (-1, 0, 1) (-1, -1, 2) 注意 在三元组(a, b, c),要求a <= b <= c。结果不能包含重复的三元组。solution: 因为三元组的元素是按照递增原创 2015-10-05 12:19:10 · 4756 阅读 · 1 评论 -
LintCode 删除排序数组中的重复数字 II
删除排序数组中的重复数字 II跟进删除排序数组中的重复数字: 如果可以允许出现两次重复将如何处理? 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]。这题和删除重复的数据是一样的,唯一不同的是我们需要保存一个计数器来记录当前重复数据的个数code :class Solution {public: /** * @param原创 2015-10-03 15:09:52 · 2437 阅读 · 0 评论 -
LintCode 合并排序数组
合并排序数组 合并两个排序的整数数组A和B变成一个新的数组。 样例 给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]code class Solution {public: /** * @param A and B: sorted integer array A and B. * @return: A new sorte原创 2015-10-03 15:37:46 · 1269 阅读 · 0 评论 -
LintCode 数组划分
数组划分 给出一个整数数组nums和一个整数k。划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置i,满足nums[i]大于等于k。 样例 给出数组nums=[3,2,2,1]和 k=2,返回 1 注意 你应该真正的划分数组nums,而不仅仅只是计算比k小的整数数,如果数组nums中的所有元素原创 2015-10-03 21:06:47 · 552 阅读 · 0 评论