无重复字符的最长子串
相交链表
二分查找
两数之和
反转链表
环形链表
二叉树的中序遍历
三数之和
二叉树的层序遍历
最大子序和
斐波那契数列
翻转二叉树
链表中倒数第k个节点
两数相加
排序数组
合并两个有序链表
最大数
只出现一次的数字
最长公共前缀
移动零
螺旋矩阵
爬楼梯
最长回文子串
有效的括号
删除链表的倒数第 N 个结点
删除排序链表中的重复元素 II
最长连续递增序列
最小栈
最长重复子数组
验证回文串
买卖股票的最佳时机
最长递增子序列
单词拆分
对称二叉树
最长增长子序列
var lengthOfLIS = function (nums) {
const dp = new Array(nums.length).fill(1);
for (let i = 0; i < nums.length; i++) {
// i与i前面的元素比较
for (let j = 0; j < i; j++) {
// 找比i小的元素,找到一个,就让当前序列的最长子序列长度加1
if (nums[i] > nums[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
// 找出最大的子序列
return Math.max(...dp);
};
复制代码
基本计算器
var calculate = function (s) {
s = s.trim()
const stack = []
let preSign = '+', num = 0, n = s.length
for (let i = 0; i < n; i++) {
if (s[i] >= '0') num = num * 10 + (s[i] - '0')
if (isNaN(Number(s[i])) || i === n - 1) {
switch (preSign) {
case '+':
stack.push(num)
break;
case '-':
stack.push(-num)
break;
case '*':
stack.push(stack.pop() * num)
break;
default:
stack.push(stack.pop() / num | 0)
break;
}
preSign = s[i];
num = 0;
}
}
return stack.reduce((a, b) => { return a + b }, 0)
};
作者:后海大草鱼