r********g 发帖数: 1351 | 1 第一题记得是用两个list来记录正的最大值和负的最大值。但是corner case不是很清
楚:
比如:如果只有一个元素,是负数,那返回这个负数,还是返回0呢?(0的意思可以理
解成0个连续元素)。
int maxSubArray(int A[], int n) {
if(n == 0) return 0;
//init
int *minList = new int[n];
int *maxList = new int[n];
memset(minList, 0, sizeof(int)*n);
memset(maxList, 0, sizeof(int)*n);
int maxP = 0;
if(A[0] > 0) {
maxList[0] = A[0];
maxP = A[0];
}
else minList[0] = A[0];
//compute
for(int i = 1; i < n; i++){
if(A[i] == 0)... 阅读全帖 |
|
p*****2 发帖数: 21240 | 2 我写了个C#的,发现在纸上写好,到了VS上还是要改很多。
static void minSum(Node root)
{
if (root == null)
return;
List list = new List();
List minlist = new List();
list.Add(root);
Check(list, ref minlist);
Console.WriteLine(minlist.Count-1);
foreach (Node i in minlist)
i.Print();
}
static void Check(List list, ref List minlist)
{
Node node = list[list.Count - 1];
if (node.... 阅读全帖 |
|
X*K 发帖数: 87 | 3 靠,想来不难,但是很容易出错啊。这个算是验证过了。
public class NextPower implements Powers {
List powerList;
long previous;
public NextPower() {
powerList = new ArrayList();
reset();
}
@Override
public Long next() {
long min = Long.MAX_VALUE;
List minList = new ArrayList();
for (int i = 0; i < powerList.size(); ++i) {
int base = i + 2;
int power = powerList.get(i) + 1;
long n = (long) ... 阅读全帖 |
|
e***s 发帖数: 799 | 4 要改这一句才对吧
minlist.Sum(n => n.Value) > list.Sum(n => n.Value) |
|