力扣题

2022/2/18

# 2.两数相加

function ListNode(val, next) {
    this.val = val;
    this.next = next;
}

const l1 = new ListNode(
    2,
    new ListNode(
        4,
        new ListNode(3)
    )
)
const l2 = new ListNode(
    5,
    new ListNode(
        6,
        new ListNode(4)
    )
)
addTwoNumbers(l1, l2); // 链表:7,0,8
复制成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 4.找中位数

  • 给两个正序(从小到大)数组,求中位数
const nums1 = [1,3], nums2 = [2]
console.log(findMedianSortedArrays(nums1, nums2))
// 2
// 合并数组 = [1,2,3] ,中位数 2
复制成功
1
2
3
4
  • 如果是两个,就要两个的和/2

# 5.最长回文字符串

const s = "babad";
console.log(longestPalindrome(s))
// "bab"
// "aba" 同样是符合题意的答案。
复制成功
1
2
3
4

# 10.正则匹配

  • 给定正则表达式,和一个字符串,看正则是否能匹配完整的字符串。模拟'.'和'*'
const s = "aa", p = "a";
console.log(isMatch(s, p));
// false
// "a" 无法匹配 "aa" 整个字符串。
复制成功
1
2
3
4
const s = "aa", p = "a*";
console.log(isMatch(s, p));
// true
// 因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。
复制成功
1
2
3
4

# 11.盛最多水容器

const arr = [1,8,6,2,5,4,8,3,7]
console.log((maxArea(arr))); // 49 
// 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

复制成功
1
2
3
4

# 20.括号匹配

  • 左右括号匹配且出现顺序正确
  • s 仅由括号 '()[]{}' 组成
const s = "()[]{}"
console.log(isValid(s));
// 输出:true
复制成功
1
2
3
const s = "([)]"
console.log(isValid(s));
// 输出:false
复制成功
1
2
3

# 9.回文整数

  • 一个数字是回文
const x = 121;
console.log(isPalindrome(x));
// 输出:true
复制成功
1
2
3

# 12.整数转罗马数字

  • 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
/*  字符          数值
    I             1
    V             5
    X             10
    L             50
    C             100
    D             500
    M             1000

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
    IV            4
    IX            9
    XL            40
    XC            90
    CD            400
    CM            900
/*
复制成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  • 小的在大的左边代表减多少
const num = 4
console.log(intToRoman(num));
// 输出: "IV"
复制成功
1
2
3

# 13.罗马转数字

  • 同上,倒过来而已
const s = "III";
console.log(romanToInt(s));
// 输出: 3
复制成功
1
2
3

# 22.括号生成

  • 给一个数字i,生成i个括号,并且要符合规范的所有组合方式
const n = 3
console.log(generateParenthesis(n));
// 输出:["((()))","(()())","(())()","()(())","()()()"]
复制成功
1
2
3

# 25. K 个一组翻转链表

  • 给一个链表,以及指定要翻转的位数。
const head = [1,2,3,4,5], k = 2
console.log(reverseKGroup(head, k)); // 链表形式
// 输出:[2,1,4,3,5]
复制成功
1
2
3

# 27.移除元素

  • 不用额外的数组空间,在原数组进行删除指定元素
const nums = [3,2,2,3], val = 3;
console.log(removeElement(nums, val));
// 输出:2, nums = [2,2]
复制成功
1
2
3

# 24.两两交换链表

  • 链表两两交换
const head = [1,2,3,4]
console.log(swapPairs(head));
// 输出:[2,1,4,3]
复制成功
1
2
3

# 504. 七进制数

const num = 100;
console.log(convertToBase7(num));
// 输出: "202"
复制成功
1
2
3

# 459. 重复的子字符串

const s = "abab"
console.log(repeatedSubstringPattern(s));
// 输出: true
// 解释: 可由子串 "ab" 重复两次构成。
复制成功
1
2
3
4

# 1154.一年中的第几天

  • 求今天是今年的第几天
  • 四年一润,百年不润,四百年再润,

# 75. 颜色分类

  • 将只有[0, 1, 2] 的数组进行排序
const nums = [2,0,2,1,1,0]
console.log(sortColors(nums));
// 输出:[0,0,1,1,2,2]
复制成功
1
2
3

# 43. 字符串相乘

  • 纯字符串,大数相乘
const n1 = '123';
const n2 = '456';
console.log(multiply(n1, n2)); // 56088
复制成功
1
2
3

# 71. 简化路径

// 始终以斜杠 '/' 开头。
// 两个目录名之间必须只有一个斜杠 '/' 。
// 最后一个目录名(如果存在)不能 以 '/' 结尾。
// 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。
const path = "/home/"
console.log(simplifyPath(path));
// 输出:"/home"
复制成功
1
2
3
4
5
6
7

# 227. 基本计算器 II

  • 只有加减乘除的表达式进行计算,禁止使用eval

# 161. 相隔为 1 的编辑距离

  • 只能操作一次,且必须操作一次,增删改一个字符
const s = "ab";
const t = "acd";
console.log(isOneEditDistance(s, t));
// 输出: true
复制成功
1
2
3
4

# 46. 全排列,回溯,递归

const nums = [1,2,3];
console.log(permute(nums));
// 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
复制成功
1
2
3

# 441. 排列硬币

  • 第一列需要1个硬币,第n列需要n个硬币,求给的硬币能排满几列
const n = 5
console.log(arrangeCoins(n));
// 输出:2
复制成功
1
2
3
上次更新: 6/13/2025
Powered By Valine
v1.4.16