1. function lastStoneWeight(stones) {
    2. let dp = new Array(15001).fill(0);
    3. let sum = 0;
    4. for (let i = 0; i < stones.length; i++) {
    5. sum += stones[i];
    6. }
    7. let target = Math.floor(sum / 2);
    8. for (let i = 0; i < stones.length; i++) {
    9. for (let j = target; j >= stones[i]; j--) {
    10. dp[j] = Math.max(dp[j], dp[j - stones[i]] + stones[i])
    11. }
    12. }
    13. return sum - 2 * dp[target];
    14. }