题目:
求一个一维数组(N个元素)中最长递增子序列的长度
DP题
代码如下:
#include
using namespace std;
const int MAXN = 100000;
const int INF = 10000000;
int minV[MAXN], lis[MAXN], Array[MAXN];
int n;
//lis[i]表示从第i个元素开...
分类:
编程语言 时间:
2015-01-25 18:18:01
阅读次数:
168
题目:把一个含有N个元素的字符串右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。
例子:
字符串为:abcd1234,右移4位,结果变为:1234abcd
思路:
移动前跟移动后是有两段的顺序是不变的,所以可以把这两段看成两个整体
右移K位的过程就是把数组的两部分交换一下。
交换的过程:(1)逆序排列第一部分
(2)逆序排列第二部分
(3)再全部逆序!
...
分类:
编程语言 时间:
2015-01-25 18:16:08
阅读次数:
210
原题地址非常经典的一道题。可以转换成求最大连续和做,但是有更简单的方法。基于一个数学定理:如果一个数组的总和非负,那么一定可以找到一个起始位置,从他开始绕数组一圈,累加和一直都是非负的(证明貌似不难,以后有时间再补)有了这个定理,判断到底是否存在这样的解非常容易,只需要把全部的油耗情况计算出来看看是...
分类:
其他好文 时间:
2015-01-25 18:05:12
阅读次数:
141
1.随机选择一个数组项var items = [1, 2, 'a', 3, 4, 'b', 5, 'c', 6, 119, 'd']; var randomItem = items[Math.floor(Math.random() * items.length)];2.将参数对象转换为数组var.....
分类:
编程语言 时间:
2015-01-25 18:00:43
阅读次数:
192
突然发现题目写的有些大,一下子不知道应该怎么写了//改变一个数据,需要数据的地址,也就是指针,int需要int*//改变一个指针变量,需要指针的地址,二级指针,int*需要int **//改变一个二级指针,需要二级指针的地址,三级指针,int**需要int ***//改变一个指针,指针指向数组,需要...
分类:
其他好文 时间:
2015-01-25 17:56:46
阅读次数:
110
这个题目一开始没想到用优先队列,或许说没学过优先队列,结果卡死了。然后看了别人的题解,原来如此,基本方法就是BFS。
优先队列的基本用法:http://blog.csdn.net/baochunzhi/article/details/7664422,讲解还是比较详细。
这题还有一个注意点就是如何输出,这里就要注意前后的关系,我是用next数组来表示前后两点的相对关系,具体可以见代码。输出的时候...
分类:
其他好文 时间:
2015-01-25 16:40:53
阅读次数:
213
方法一.var arr=[2,58,49,26,49];var o={};var new_arr=[];for(var i=0;i<arr.length;i++){ var k=arr[i]; if(o[k]=1){ new_arr.push(k); o[k]=1; }}alert(new_ar.....
分类:
编程语言 时间:
2015-01-25 16:28:00
阅读次数:
221
var arr=[34,71,8,934,10];
var value=999;
var index=-1;
for(var i=0;i
{
if(arr[i]
{
value=arr[i];
index=i;
}
}
alert("...
分类:
编程语言 时间:
2015-01-25 15:18:43
阅读次数:
192
通常解决大数运算数据超出范围,溢出的问题。一般采用数组去模拟。求算n!可以看成是每次两个整数相乘的过程,因此可以模拟成大数相乘的过程。只是需要增加一些变量去存储中间的进位和当前位的数值。...
分类:
其他好文 时间:
2015-01-25 15:17:14
阅读次数:
183
方法一.var arr=[2,58,49,26,34];alert(arr.sort()[arr.length-1]);方法二.var arr=[2,58,49,26,34];alert(Math.max.apply(this,arr));
分类:
编程语言 时间:
2015-01-25 15:11:02
阅读次数:
185