Skip to content

Conversation

@JooKangsan
Copy link
Contributor

@JooKangsan JooKangsan commented Nov 30, 2024

📌 푼 문제

문제이름 문제링크
Merge Intervals https://leetcode.com/problems/merge-intervals
Min Cost to Connect all points https://leetcode.com/problems/min-cost-to-connect-all-points
Lowest Common ancestor of a Binary Search Tree https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree
Word Break https://leetcode.com/problems/word-break
Kth largest element in an Array https://leetcode.com/problems/kth-largest-element-in-an-array

📝 간단한 풀이 과정

56. Merge Intervals

var merge = function (intervals) {
  intervals.sort((a, b) => a[0] - b[0]);

  for (let i = 1; i < intervals.length; i++) {
    if (intervals[i][0] <= intervals[i - 1][1]) {
      intervals[i][1] = Math.max(intervals[i][1], intervals[i - 1][1]);
      intervals[i][0] = intervals[i - 1][0];
      intervals.splice(i - 1, 1);
      i--;
    }
  }

  return intervals;
};

1584. Min Cost to Connect all points

이문제는 결국 못풀어서 챗지피티한테 물어봐서 답을 얻고 이해하는데 시간을 쏟았습니다.

var minCostConnectPoints = function (points) {
  const n = points.length;
  const visited = new Array(n).fill(false);
  const minDist = new Array(n).fill(Infinity);
  minDist[0] = 0;
  let result = 0;
  for (let i = 0; i < n; i++) {
    let x = -1;
    for (let j = 0; j < n; j++) {
      if (!visited[j] && (x === -1 || minDist[j] < minDist[x])) {
        x = j;
      }
    }
    visited[x] = true;
    result += minDist[x];
    for (let k = 0; k < n; k++) {
      if (!visited[k]) {
        const dist =
          Math.abs(points[x][0] - points[k][0]) +
          Math.abs(points[x][1] - points[k][1]);
        minDist[k] = Math.min(minDist[k], dist);
      }
    }
  }
  return result;
};

235. Lowest Common ancestor of a Binary Search Tree

var lowestCommonAncestor = function(root, p, q) {
  let min = Math.min(p.val, q.val)
  let max = Math.max(p.val, q.val)

  if(min > root.val) {
      return lowestCommonAncestor(root.right, p, q)
  } else if(max < root.val) {
      return lowestCommonAncestor(root.left, p, q)
  } else {
      return root
  }
};

139. Word Break

var wordBreak = function(s, wordDict) {
    const memo = new Map();

    function dp(str, i = 0) {
        if (str.length === 0) return true;
        if (i >= wordDict.length) return false;

        const key = str + ',' + i;
        if (memo.has(key)) return memo.get(key);

        let word = wordDict[i];
        if (str.slice(0, word.length) === word) {
            if (dp(str.slice(word.length), 0)) {
                memo.set(key, true);
                return true;
            }
        }

        const result = dp(str, i + 1);
        memo.set(key, result);
        return result;
    }

    return dp(s);
};

215. Kth largest element in an Array

var findKthLargest = function(nums, k) {
  let [min, max] = nums.reduce(([min, max], num) => 
      [Math.min(min, num), Math.max(max, num)], 
      [Infinity, -Infinity]
  );

  const offset = min >= 0 ? 0 : -min;
  const count = new Array(max + 1 + offset).fill(0);

  for(let num of nums) {
      count[num + offset]++;
  }

  let kthLargest;
  for(let i = count.length - 1; i >= 0; i--) {
      k -= count[i];
      if(k <= 0) {
          kthLargest = i - offset;
          break;
      }
  }

  return kthLargest;
};

저번주부터 너무 어려워요.,..

@oris8 oris8 requested review from Haze-S and SeungHun6450 November 30, 2024 07:42
@oris8 oris8 merged commit abb5839 into master Dec 2, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants