力扣
·Q·
努力努力
展开
-
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]var reversePrint = function(head) { if(head===null){ return []; } let arr = []; while(head!==null){ arr.push(head.val)原创 2021-05-09 22:59:49 · 77 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7解法:分治法递归根据前序找到根节点的值 找到根节点在中序中的位置 找出中序和前序的左右子树 再继续.原创 2021-05-09 22:58:05 · 84 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格请实现一个函数,把字符串s中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."方法:字符串转数组 替换数组值时间复杂度:O(n) 空间复杂度:O(n)var replaceSpace = function(s) { // return s.replaceAll(" ","%20") //时间复杂度 O(n) 空间复杂度O(n) ...原创 2021-05-09 15:39:37 · 70 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
1剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23,原创 2021-05-09 15:16:12 · 127 阅读 · 0 评论 -
剑指 Offer 03.数组中重复的数字
剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3方法:利用哈希表 如果哈希表中有该键,直接返回该键 无改键时随便赋值(这里复制为true)时间复杂度:最坏O(n) 最好O(1)空间复杂...原创 2021-05-09 14:59:52 · 76 阅读 · 0 评论 -
LeetCode13:罗马数字转整数
罗马数字转整数Category Difficulty Likes Dislikes algorithms Easy (62.41%) 1282 - TagsCompanies罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D ...原创 2021-04-25 12:25:48 · 95 阅读 · 0 评论 -
力扣20
有效的括号//方法1 栈function validBraces(str) { if(str.length%2 !== 0) return false; let arr = []; //栈结构 let map = new Map(); //左括号存放一个右括号 map.set("]","["); map.set("}","{"); map.set(")","("); for(let i of str){ .原创 2021-04-11 22:13:52 · 68 阅读 · 0 评论 -
删除字符串中的所有相邻重复项
问题描述给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在S上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。提原创 2021-03-14 20:32:52 · 145 阅读 · 0 评论 -
链表相加
题目:两数相加https://leetcode-cn.com/problems/add-two-numbers/var addTwoNumbers = function(l1, l2) { let head = null,tail = null; let add = 0; while(l1 || l2){ const v1 = l1 ? l1.val : 0; const v2 = l2 ? l2.val : 0; let su原创 2021-03-10 17:47:06 · 88 阅读 · 0 评论 -
子串首次出现的位置
查询子串首次出现的位置,如:原串abccbaxzabc 子串为axz 结果为5var str = 'abcacd'; var str1 = 'ca'; // 方法一 console.log(str.indexOf(str1)); // 方法二 function subStr1(str, str1) { var start = 0; for (var i = 0; i < str.length; i++) { for (var j = 0;.原创 2021-01-26 22:39:03 · 632 阅读 · 0 评论 -
对称数组(回文数)
判断一个数组是不是对称数组//判断数组是否为对称数组,对称数组形式如:[a, b, c, b, a]、[a, b, c, c, b, a]回文数 var str="123321" >var str1=str.split('').join('');(转为数组)//判断数组是否为对称数组,对称数组形式如:[a, b, c, b, a]、[a, b, c, c, b, a] var arr2 = ['a', 'b', 'c', 'c', 'b', 'a']; var arr3 =.原创 2021-01-25 22:51:35 · 1559 阅读 · 0 评论 -
字符串翻转
//字符串反转 ‘123abc’ -> ‘cba321’。 var str = '123abc'; console.log(str.split('').reverse().join('')); //cba321原创 2021-01-25 22:29:38 · 145 阅读 · 0 评论 -
最长连续子序列
计算数组中,最大连续增长子序列的长度,如:[1,2,3,4,1,2,3,4,5,1,2,3] 结果为5。//计算数组中,最大连续增长子序列的长度,如:[1,2,3,4,1,2,3,4,5,1,2,3] 结果为5。 var arr = [1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 7]; function getMaxLength(arr) { //... var addNum = 0; var len = 0; .原创 2021-01-26 22:53:36 · 425 阅读 · 0 评论 -
两数之和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1,...原创 2021-02-03 15:38:25 · 104 阅读 · 0 评论