1 | // 不同的创建方式 |
1 | // 不同的创建方式 |
1 | const stack = new Array(); |
1 | // 只允许从尾部添加元素,只允许从头部添加元素 |
1 | /* 链表元素的新增操作 */ |
1 | // 二叉树的创建 |
1 | // 遍历数据模板 |
1 | function preorder(treeNode){ |
1 | function inorder(treeNode){ |
1 | function postorder(treeNode){ |
时间复杂度从小到大排列
1 | function sum(a, b) { |
1 | function createArray(n) { |
1 | function createMatrix(n) { |
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
示例:给定 nums = [2, 7, 11, 15], target = 9 输出: [0, 1]
思路:
1 | // 简单粗暴法 |
1 | // 空间换时间,通过映射优化算法执行时间 |
题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
示例:nums1 = [1,2,3], m = 3, nums2 = [2,5,6], n = 3 ; 输出: [1,2,2,3,5,6]
思路:
1 | function merge(nums1,m,nums2,n){ |
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ]
思路:
1 | const threeSum = function (nums){ |
1 | // 反转字符串(可用于判断是否回文字符串) |
真题描述:给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
示例 1: 输入: “aba” 输出: True 。示例 2:输入: “abca” 输出: True
思路:
1 | const validPalindrome = function(str){ |
真题描述:设计一个支持以下两种操作的数据结构:void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。”. 可以表示任何一个字母。”
1 | const WordDictionary = function(){ |
思路:
1 | const myAtoi = function(str) { |
处理链表的本质,是处理链表结点之间的指针关系
1 | // 创建ListCode单节点 |
1 | function deleteDuplicates(head){ |
1 | function deepDeleteDuplicates(head){ |
1 | function delDetalNode(head,n){ |
1 | function reverseListNode(head){ |
1 | function partReverseList(head,m,n){ |