3

私は人々が商品を販売できるウェブサイトを持っています。彼らは製品を追加するたびに、私に 10 セントを支払わなければなりません。すべてのユーザーは、銀行口座と比較できるものを持っています。したがって、製品を追加すると、アカウントは-10 セントになります。各ユーザーは x 日間のみマイナスのアカウントを持つことができます。

そのため、アカウントがマイナスになった日数を計算できるアルゴリズムが必要です。

データは次のようになります。

var data = [
  { amount: -10, ago: 15 },
  { amount: 10,  ago: 10 },
  { amount: -10, ago: 5 }
];

したがって、このアカウントは5日間マイナスです。(私のアプリでは日付を使用していますが、単純にするために、ここでは「日前」を使用しています。)

もう一つの例:

var data = [
  { amount: -10, ago: 15 },
  { amount: -10, ago: 10 },
  { amount: -10, ago: 5 }
];

このアカウントは 15 日間マイナスです。

私はすでに問題を自分で解決しましたが、もっとエレガントな解決策があるのでしょうか?

この問題に対する私の解決策: http://jsfiddle.net/SK2By/1/

アルゴリズムをテストするための空のテンプレート: http://jsfiddle.net/SK2By/

4

1 に答える 1

2

Here is another approach to consider:

var negativeDays = function (data) {

    var i, balance = 0, daysNegative = 0;

    for (i = 0; i < data.length; i++) {
        balance += data[i].amount;

        if (balance < 0) {
            if (daysNegative === 0) {
                daysNegative = data[i].ago;
            }
        } else {
            daysNegative = 0;
        }
    }

    return daysNegative;
};

jsFiddle: http://jsfiddle.net/willslab/SK2By/7/

于 2012-04-22T18:29:39.757 に答える