Skip to content

leetcode 题库

一维数组的动态和

题目

ts
export function runningSum(nums: number[]) {
  const result = [nums[0]]
  for (let i = 1; i < nums.length; i++) {
    result[i] = result[i - 1] + nums[i]
  }
  return result
}

将数字变成 0 的操作次数

题目

ts
export function numberOfSteps(num: number) {
  let steps = 0
  while (num > 0) {
    if (num % 2 === 0) {
      num /= 2
    } else {
      num--
    }
    steps++
  }
  return steps
}

最富有客户的资产总量

题目

ts
export function maximumWealth(accounts: number[][]) {
  let max = 0
  for (let i = 0, { length } = accounts; i < length; i++) {
    const sum = accounts[i].reduce((acc, cur) => acc + cur, 0)
    max = Math.max(max, sum)
  }
  return max
}

Fizz Buzz

题目

ts
export function fizzBuzz(n: number) {
  const res: string[] = []
  for (let i = 1; i <= n; i++) {
    let str = ''
    if (i % 3 === 0) {
      str += 'Fizz'
    }
    if (i % 5 === 0) {
      str += 'Buzz'
    }
    res.push(str || i.toString())
  }
  return res
}

链表的中间结点

题目

ts
export class ListNode {
  val: number
  next: ListNode | null
  constructor(val?: number, next?: ListNode | null) {
    this.val = val === undefined ? 0 : val
    this.next = next === undefined ? null : next
  }
}

export function middleNode(head: ListNode | null) {
  let slow = head
  let fast = head
  while (fast?.next) {
    slow = slow!.next
    fast = fast.next.next
  }
  return slow
}

赎金信

题目

ts
export function canConstruct(ransomNote: string, magazine: string) {
  if (ransomNote.length > magazine.length) return false

  const map = new Map<string, number>()
  for (const char of magazine) {
    map.set(char, (map.get(char) || 0) + 1)
  }
  for (const char of ransomNote) {
    if (!map.has(char) || map.get(char) === 0) {
      return false
    }
    map.set(char, map.get(char)! - 1)
  }
  return true
}

最大子数组

题目

ts
export function getMaxSubSum(arr: number[]) {
  let maxSum = 0
  let partialSum = 0

  for (const e of arr) {
    partialSum += e
    maxSum = Math.max(maxSum, partialSum)
    if (partialSum < 0) partialSum = 0
  }

  return maxSum
}