Skip to content

Latest commit

 

History

History
20 lines (20 loc) · 701 Bytes

russian-doll-envelopes.md

File metadata and controls

20 lines (20 loc) · 701 Bytes
/**
 * @param {number[][]} envelopes (w, h)
 * @return {number}
 */
var maxEnvelopes = function(envelopes) {
  // 这个解法的关键在于,对于宽度 w 相同的数对,要对其高度 h 进行降序排序。因为两个宽度相同的信封不能相互包含的,逆序排序保证在 w 相同的数对中最多只选取一个。
  envelopes.sort((a,b) => a[0] === b[0] ? b[1] - a[1] : a[0]-b[0]);
  const len = envelopes.length;
  const dp = new Array(len).fill(1);
  for (let i = 0; i < len; i++) {
    for (let j = 0; j < i; j++) {
      if (envelopes[i][1] > envelopes[j][1]) {
        dp[i] = Math.max(dp[i], dp[j] + 1); 
      }
    }
  }
  return Math.max(...dp);
};