算法
互联网切图仔
这个作者很懒,什么都没留下…
展开
-
日常写BUG-2、获取选中节点的所有父节点
一、场景描述:在使用ant-design-vue的树选择组件(TreeSelect)时,需要获取到旋转节点的所有父节点,并通过数组的形式返回二、实现```javascript/** * @description: * @param {*} tree 树 * @param {*} menuid 选择的节点 * @return {*} */ treeFindPath(tree, menuid) { var path = [原创 2021-06-17 17:26:59 · 744 阅读 · 0 评论 -
算法学习篇-19、搜索插入位置
一、题目给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。你可以假设在数组中无重复元素。样例[1,3,5,6],5 → 2[1,3,5,6],2 → 1[1,3,5,6], 7 → 4[1,3,5,6],0 → 0二、思路1、遍历数组,如果数组中存在与目标值相等的元素,则返回该索引2、如果数组中的元素比目标值大,那么目标值插入的位置为比目标值大的第一个元素的位置3、若数组中的元素都比目标值小,则目标值插入的位置为数组的长度三、代原创 2020-07-23 11:39:41 · 98 阅读 · 0 评论 -
算法学习篇-18、两数之和
一、题目给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。样例Example1:给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].Example2:给出 numbers = [15, 2, 7, 11], target = 9, 返回 [1, 2].二、思路1、两个数相加要等于target,则一个数原创 2020-07-21 21:51:20 · 174 阅读 · 0 评论 -
算法学习篇-17、比较字符串
一、题目比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母样例给出 A = “ABCD” B = “ACD”,返回 true给出 A = “ABCD” B = “AABC”, 返回 false二、代码const compareStrings = function (A, B) { let arrA=(A.split('')).sort() let arrB=(B.split('')).sort() if(arrA.length<原创 2020-07-20 22:06:40 · 209 阅读 · 0 评论 -
算法学习篇-16、最大子数组
一、题目给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例样例1:输入:[−2,2,−3,4,−1,2,1,−5,3]输出:6解释:符合要求的子数组为[4,−1,2,1],其最大和为 6。样例2:输入:[1,2,3,4]输出:10解释:符合要求的子数组为[1,2,3,4],其最大和为 10。二、思路:1、使用for()循环遍历数组,依次累加2、当遇到负的和则放弃之前累加的结果,重新进行累加,保留最大值;用sum记录最终返回的最大和,用temp记录累计值;三、代码原创 2020-07-20 11:58:39 · 99 阅读 · 0 评论 -
算法学习篇-15、恢复旋转排序数组
一、题目给定一个旋转排序数组,在原地恢复其排序。(升序)样例Example1:[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]Example2:[6,8,9,1,2] -> [1,2,6,8,9]二、思路:使用数组排序方法sort()直接排序三、js代码const recoverRotatedSortedArray = function (nums) { // write your code here return nums.sort((a原创 2020-07-20 11:35:34 · 130 阅读 · 0 评论 -
算法学习篇-14、翻转链表
一、题目翻转一个链表样例样例 1:输入: 1->2->3->null输出: 3->2->1->null样例 2:输入: 1->2->3->4->null输出: 4->3->2->1->null二、思路:1、先判断列表是否为空或者只有一个节点2、当第一个节点(1)的下一个节点(2)不为null时,则把这个节点(2)插到链表的第一位置,然后第一个节点(1)向后移一位,依次循环,直到下一个节点为null跳出循原创 2020-07-20 11:30:20 · 126 阅读 · 0 评论 -
算法学习篇-13、搜索二维矩阵
一、题目写出一个高效的算法来搜索 m × n矩阵中的值。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每行的第一个数大于上一行的最后一个整数。样例样例 1:输入: [[5]],2输出: false样例解释: 没有包含,返回false。样例 2:输入:[[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]],3输出: true样例解释: 包含则返回true。二、思路:1、先判断当前数组是否包含目标值2、从坐标[0原创 2020-07-20 10:51:41 · 135 阅读 · 0 评论 -
算法学习篇-12、二分查找
一、题目给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例样例 1:输入:[1,4,4,5,7,7,8,9,9,10],1输出: 0样例解释: 第一次出现在第0个位置。样例 2:输入: [1, 2, 3, 3, 4, 5, 10],3输出: 2样例解释: 第一次出现在第2个位置样例 3:输入: [1, 2, 3, 3, 4, 5, 10],6输出原创 2020-07-17 23:39:37 · 178 阅读 · 0 评论 -
算法学习篇-11、Fizz Buzz 问题
一、题目给你一个整数n. 从 1 到 n 按照下面的规则打印每个数:如果这个数被3整除,打印fizz.如果这个数被5整除,打印buzz.如果这个数能同时被3和5整除,打印fizz buzz.如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。样例比如 n = 15, 返回一个字符串数组:[“1”, “2”, “fizz”,“4”, “buzz”, “fizz”,“7”, “8”, “fizz”,“buzz”, “11”, “fizz”,“13”, “14”, “fizz原创 2020-07-17 22:27:09 · 660 阅读 · 0 评论 -
算法学习篇-10、合并排序数组 II
一、题目合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。样例样例 1:输入: A=[1], B=[1]输出:[1,1] 样例解释: 返回合并后的数组。样例 2:输入: A=[1,2,3,4], B=[2,4,5,6]输出: [1,2,2,3,4,4,5,6] 样例解释: 返回合并后的数组。二、思路:1、先合并两个数组2、然后再对新的数组进行排序三、js代码const mergeSortedArray = function (A, B) { var C=原创 2020-07-17 21:45:45 · 118 阅读 · 0 评论 -
算法学习篇-9、尾部的零
一、题目设计一个算法,计算出n阶乘中尾部零的个数样例样例 1:输入: 11输出: 2样例解释: 11! = 39916800, 结尾的0有2个。样例 2:输入: 5输出: 1样例解释: 5! = 120, 结尾的0有1个。二、js代码const trailingZeros = function (n) { let num = 0 while( n > 0){ n = parseInt(n / 5) //计算n中5的个数原创 2020-07-16 22:36:19 · 67 阅读 · 0 评论 -
算法学习篇-8、交换数组两个元素
一、题目给你一个数组和两个索引,交换下标为这两个索引的数字输入: [1, 2, 3, 4], index1 = 2, index2 = 3输出: 交换后你的数组应该是[1, 2, 4, 3], 不需要返回任何值,只要就地对数组进行交换即可。输入: [1, 2, 2, 2], index1 = 0, index2 = 3输出: 交换后你的数组应该是[2, 2, 2, 1], 不需要返回任何值,只要就地对数组进行交换二、js代码const swapIntegers = function (A原创 2020-07-16 21:31:28 · 385 阅读 · 0 评论 -
算法学习篇-7、链表节点计数
一、题目计算链表中有多少个节点.输入: 1->3->5->null输出: 3输入: null输出: 0二、js代码const countNodes = function (head) { var count=0; if(head ==null){ //判断该链表的头节点是不是null值 return 0; //null值则返回0 }; while(head){ //循环遍历该链表所有节点 count++; /原创 2020-07-16 21:21:10 · 275 阅读 · 0 评论 -
算法学习篇-6、整数排序
一、题目给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。二、js代码冒泡排序:const sortIntegers = function (A) { for(var i=0;i<=A.length-1;i++){ //总共需要循环的趟次 for(var j=0;j<=A.length-1;j++){ //每一趟循环的次数 if(A[j]>A[j+1]){ //将当前值与当前值+1进行比较,如原创 2020-07-15 22:22:39 · 537 阅读 · 0 评论 -
算法学习篇-5、斐波纳契数列
一、题目查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 …二、js代码耗时短,较难理解const fibonacci = function (n) { if(n==1){ return 0 } else if(n==2){ return 1 }原创 2020-07-15 21:01:01 · 191 阅读 · 0 评论 -
算法学习篇-4、三数之中的最大值
一、题目给三个整数,求他们中的最大值。输入: num1 = 1, num2 = 9, num3 = 0输出: 9二、js代码const maxOfThreeNumbers = function (num1, num2, num3) { var arr=[]; arr.push(num1,num2,num3); return Math.max(...arr) }三、代码解析1、先将这三个数使用push()都加进一个数组里面2、然后使用JavaScript中的原创 2020-07-14 22:29:28 · 260 阅读 · 0 评论 -
算法学习篇-3、数组的最大值
一、题目求数组的最大值输入: [1.0, 2.1, -3.3]输出: 2.1二、js代码const arr = [1.0,2.1,-3.3];console.log(Math.max(...arr)); 三、代码解析使用JavaScript中的Math.max()可以求出最大值四、涉及知识Math.max() 函数返回一组数中的最大值。...原创 2020-07-14 22:28:56 · 144 阅读 · 0 评论 -
算法学习篇-2、大小写转换
一、题目将一个字符由小写字母转换为大写字母输入: ‘a’输出: ‘A’二、js代码const lowercaseToUppercase = function (character) { // write your code here return character.toUpperCase();}三、代码解析使用JavaScript的toUpperCase()可以将小写字母转换为大写字母四、涉及知识JavaScript中大小写转换方法:小写转大写:toUpperCa原创 2020-07-14 22:28:23 · 161 阅读 · 0 评论 -
算法学习篇-1、反转一个3位整数
一、题目输入: number = 123输出: 321二、js代码const reverseInteger = function (number) { return parseInt((number + "").split("").reverse().join(""));}三、代码解析1、将这一个三位数转变为字符串,所以==>number + "",2、再将这个字符串转为字符串数组以便于反转,因此==>split(""),3、接着将整个字符串数组进行反原创 2020-07-14 11:51:19 · 344 阅读 · 0 评论