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
}