- 博客(39)
- 收藏
- 关注
原创 lintcode之不同子序列数 + 序列II
不同子序列:很明显是dp, 当位置相等的时候,等于f(i - 1, j - 1) + f(i, j - 1 )否则就是f(i, j - 1)子序列:找打第一个相邻升序,从后向前找到第一个大于的,交换,排序
2016-04-27 00:03:59 557
原创 编程之美只有加法的面试题
1:枚举个数(个数的大小是有限的,可以进行放缩)num=i + i+1 + i+2 + ....+ i+k-1 一共有k个数。= (i + i+k-1)*k/2=(2*i+k-1)*k/2=k*(i+ (k-1)/2)=k*i + k*(k-1)/2判断条件: num%(k*(k-1)/2)==0 或者 2*num>k*(k-1) 得: ki=num/k;可得出i
2016-04-23 21:24:32 261
原创 编程之美之数组分割
无序数组,分割成为两个子数组,使得子数组之间的和最接近问题转换为从2n个数中找出n个,使得他们的和最接近总体和的1/2利用dp记录在前t个数中随机取i个的所有的可能的和即可,然后遍历,这样会出现指数级别可以利用遍历可能的和的值,查询在该值在前面是否出现,这样会将复杂度降低到多项式级别
2016-04-23 21:00:47 420
原创 数组循环移位
有一部分的顺序是不会发生改变的,所以实际上就是交换数组的两部分可以通过两次部分逆序和一次总体逆序来实现注意移位之前先进行取模操作来避免不必要的操作
2016-04-23 20:40:45 404
原创 编程之美之找到符合条件的数
给定N,找到最小的M,使得N*M的十进制表示中只有1,0将问题转换为在所有的只有1,0组成的数中寻找最小的一个能整除N的数即可为了避免枚举2^k的情况,将2^k的空间按照余数分解成为N-1个区间,记录每个空间中的最小数即可,这样可以让得到的数是最小书上的代码很清晰,直接看就能懂很赞.这道题目主要学到的思想还是问题转换和空间分割
2016-04-23 19:12:21 334
原创 编程之美最大公约数
1.辗转相除(对于数比较大的时候,会耗时比较高)2.变成相减,利用x - y,y和x,y有相同的最大公约数3.2虽然降低了运算的复杂度,但是很明显增加了迭代次数利用f(x,y) = f(p*x1, y) = f(x1, y)即可,其中P是素数,并且y不能整除P最简单的直接利用2作为素数P, 可以利用位运算复杂度 O(log2(max(x,y)))
2016-04-23 18:33:51 232
原创 编程之美精确表达浮点数
首先数表示为整数 + 小数小数分为有限小数和无限小数对于有限小数就很简单直接 a / 10^n对于存在无限循环小数的情况:x = (a + 0.bbbb) / 10 ^n10 ^m * 0.bbb = bbb + 0.bbb;即可解出0.bbb再带入即可 然后进行约分,也就是需要求最大公约数
2016-04-23 17:19:01 366
原创 编程之美之发帖水王
就是一个摩尔投票的过程这个时候不需要进行排序,直接进行,复杂度是O(n)扩展:找出其中三个发帖数目超过1/4的人的ID,直接变成3个的摩尔投票先处理是空的状态,但是同时注意不能出现一个ID放在了两个中的状态
2016-04-23 10:46:59 197
原创 lintcode之数组划分
题目:给出一个整数数组nums和一个整数k。划分数组(即移动数组nums中的元素),使得:所有小于k的元素移到左边所有大于等于k的元素移到右边返回数组划分的位置,即数组中第一个位置i,满足nums[i]大于等于k。解答:两个指针交换注意边界和只在l class Solution {public: in
2016-04-21 21:59:52 365
原创 lintcode之两数之和
题目:给一个整数数组,找到两个数使得他们的和等于一个给定的数target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是1到n,不是以0开头。解答:hash + 排序 + two pointers,注意数是可能重复的class Solution {public: /* * @p
2016-04-21 20:56:01 1031
原创 leetcode之三数之和 II
题目:给一个包含n个整数的数组S, 找到和与给定整数target最接近的三元组,返回这三个数的和解答:two pinters实现,很简单class Solution {public: /** * @param numbers: Give an array numbers of n integer * @param target: An in
2016-04-20 23:34:53 403
原创 lintcode之 数组剔除元素后的乘积
题目:给定一个整数数组A。定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。解答:保存一个左数组和右数组即可class Solution {public: /** * @param A: Given an integers array A
2016-04-20 18:45:13 293
原创 lintcode之 合并排序数组 II
题目:合并两个排序的整数数组A和B变成一个新的数组。你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。解答:倒过来进行添加,正着添加可能需要移位,会比较麻烦class Solution {public: /** * @param A: sorted integer array A which has m elements,
2016-04-20 18:21:37 2894
原创 lintcode之删除排序数组中的重复数字
题目:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。解答:很明显的用两个指针即可class Solution {public: /** * @param A: a list of integers * @return
2016-04-19 11:58:26 222
原创 lintcode 之子数组之和
题目:给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置解答:同时用一个hash来记录每一个sum对应的下表,只要出现相同的sum,他们之间的这一部class Solution {public: /** * @param nums: A list of integers * @return: A list of in
2016-04-17 11:19:52 285
原创 lintcode之转换字符串到整数
题目:实现atoi解答:此题是细致题,需要考虑到各种情况,比如去除空前缀,去除0前缀,处理非0-9字符,处理小数点等class Solution {public: /** * @param str: A string * @return An integer */ int atoi(string str) { // w
2016-04-16 21:20:22 375
原创 lintcode之最长公共前缀
题目:给k个字符串,求出他们的最长公共前缀(LCP)解答:这道题做法应该很多,可以用trie树,也可以直接枚举我是用二分+测试做的,找到最短的那个字符串,二分枚举长度,然后测试class Solution {public: /** * @param strs: A list of strings * @return: The longest
2016-04-16 20:30:53 314
原创 lintcode 之 最长公共子串
从今天开始来做lintcode 这道题目就是简单的dp 就不写了 只是立个flag开始做lintcode了恩 就这样
2016-04-16 19:49:10 323
原创 leetcode之largest number
题目:Given a list of non negative integers, arrange them such that they form the largest number.For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330.Note: The result
2016-04-16 15:59:34 298
原创 leetcode之longest palindromic substring
题目:Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.解答:1.直接dp
2016-04-12 15:19:13 167
原创 leetcode之Find the Duplicate Number
题目:Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate n
2016-04-12 11:10:28 194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人