
算法
丑小鸭变黑天鹅
奋斗吧,年轻人!
展开
-
js算法--力扣-两数之和
两数之和一、算法描述二、解题思路一、算法描述二、解题思路首先说明我的性能一般的思路,下面会介绍大神的解题思路看一下,我写的代码我的思路比较暴力直接遍历传进来的数组,最外层从第0个开始循环遍历,嵌套的一层,从后往前遍历(但是除了自身),如果发现两个数字相加等于targe,就返回这两个数在数组中的下标。举个例子,现在给了一个数组[2,7,11,15],然后target是9,那么最终答案应该是返回[0,1]第一步:i=0,j=3 ,nums[0]+nums[3] !== target第原创 2021-12-13 21:16:53 · 1960 阅读 · 0 评论 -
js算法--递归相关
一、二进制转换通过某个递归函数将输入的数字转化为二进制字符串console.log(decimalToBinary(3)); // 11console.log(decimalToBinary(8)); // 1000console.log(decimalToBinary(1000)); // 1111101000function decimalToBinary(digit) { if (digit >= 1) { if (digit % 2) { //不能被2整除 ret原创 2021-05-06 14:43:16 · 102 阅读 · 0 评论 -
js算法---栈与队列的两个算法
栈与队列的两个算法使用两个栈实现入队与出队判断大括号是否闭合使用两个栈实现入队与出队思路:使用两个数组模仿栈的功能。当有新元素的时候让它进入第一个栈,然后再让第一个栈中的元素出栈,并且进入到第二个栈,然后再让第二个栈的元素出栈,这样就实现了队列的特性,先进先出。let inputStack = []; //第一个栈let outputStack = []; //第二个栈enqueue(inputStack,1);enqueue(inputStack,2);enqueue(inputStack原创 2021-04-30 17:15:31 · 169 阅读 · 1 评论 -
js算法---乱序同字母字符串和回文字符串
乱序同字母字符串要求:给定两个字符串,判断是否颠倒字母而成的字符串,譬如Mary与Army就是同字母而顺序颠倒思路:给定两个字符串,首先将这两个字符串都转换为小写或者大写,然后都采用sort()进行排序,如果二者最后一样,那么就证明二者是乱序通字母字符串/* 乱序同字母字符串 给定两个字符串,判断是否颠倒字母而成的字符串,譬如Mary与Army就是同字母而顺序颠倒: 思路:给定两个字符串,首先将这两个字符串都转换为小写或者大写,然后都采用sort()进行排序 如果二者最后一样,那么就证明二原创 2021-04-30 14:30:08 · 387 阅读 · 0 评论 -
js算法---颠倒字符串
颠倒字符串颠倒字符串思路:利用reverse()、split()、join()/* 颠倒字符串 思路:利用reverse() */const str = "I am a student";var reverseEntireSentence1 = reverseString(str,""); //以引号作为分隔符var reverseEntireSentence2 = reverseString(str," "); //以空格作为分隔符var reverseEachWord = reve原创 2021-04-29 12:52:04 · 501 阅读 · 0 评论 -
js算法----数组交集
数组交集要求:给定两个数组,要求求出两个数组的交集,注意,交集中的元素应该是唯一的。求出两个数组的交集,例如arr1 = [2,4,0,1] arr2 = [2,2,1,3]最终求出的交集为arr3 = [1,2]思路:利用hashmap的特性,首先利用第一个数组通过foreach循环遍历创建一个hashmap,这个hashmap的键就是这个数组的元素,值我们规定为1。然后再循环遍历第二个数组,看一看第二个数组中的元素在hashmap中的值是否为1,如果为1,就将其添加到新数组。const原创 2021-04-29 11:52:56 · 1941 阅读 · 0 评论 -
js算法--- 数组中元素乘积
数组中元素乘积要求:给定某无序数组,要求返回新数组 output ,其中 output[i] 为原数组中除了下标为 i 的元素之外的元素乘积,要求以 O(n) 复杂度实现:思路:假设现在给定一个数组[-2,-2,-3,2]那么最后要求output的第一个元素为(-2)*(-3)*2=12第二个元素为(-2) * (-3) * 2=12,第三个元素为(-2) * (-2) * 2=8,第四个元素为(-2) * (-2) * (-3)=-12,可以发现最后一个元素的乘积就是前面三个元素的乘积原创 2021-04-28 13:19:54 · 3443 阅读 · 0 评论 -
js算法---给定某无序数组,求取任意两个元素之间的最大差值
给定某无序数组,求取任意两个元素之间的最大差值要求:注意,这里要求差值计算中较小的元素下标必须小于较大元素的下标。例如 arr=[2,3,8,4,15,1,6,9,7]最大的两个差值是15-2,而不是15-1,因为1的下标要大于15的下标思路:循环遍历数组,如果后一个数比前一个数大,让他两做差,然后用这个差值与上一个差值进行比较,如果当前这个差值比之前的大,那么久更新。如果后一个数比前一个数要小,那么就更新当前的最小值为这个数。const arr = [2,3,8,4,15,1,6,9,7原创 2021-04-28 11:36:19 · 1249 阅读 · 0 评论 -
js算法---数组去重
数组去重给定一个数组,要求去掉重复的值,并返回一个新数组第一种方法//给定一个数组,要求去掉重复的值,并返回一个新数组let arr = [1,2,6,2,3,4,6,8,9,6];/* 第一种方法思路: 利用排序可以得到重复的数字紧邻在一起,然后循环遍历数组,遇到重复的跳过,遇到新的加入 */unique(arr);function unique(arr) { const sortedArr = arr.sort(); //将第一个数先放入这个新数组,从第二个数开始遍历 let原创 2021-04-26 13:53:52 · 641 阅读 · 0 评论 -
js算法---寻找连续数组中的缺失数
寻找连续数组中的缺失数给定一个数组,给出上边界和下边界数据,里面的数是连续的,但是缺失了一个,要求找出这个缺失的数例如:arr=[2,1,3,5,4,8,9,6] 一共9个数,已知上边界为1,下边界为9,要找到缺失的7思路:首先遍历数组获取目前数组中个数想加的结果然后根据高斯求和,求出理论上的和最后相减即得到了缺失的数const arr = [2,1,3,5,4,8,9,6];const upperBound = 1;const lowerBound = 9;let prevSum =原创 2021-04-26 12:51:04 · 1839 阅读 · 0 评论 -
js算法----找出整型数组中的三个数的最大乘积
找出整型数组中的三个数的最大乘积本示例以从小到大的排序进行阐述考虑到数组有可能有负数的情况例如var arr = [10,15,-10,-12,-70,30,29];思路:1、首先拿到一个数组,应该进行排序,从大到小或者从小到大都可以。2、然后拿到排序后的数组,分别计算最后三位的乘积、前面两位和最后一位的乘积解释:这里之所以要让前两位与最后一位相乘,是因为如果有负数负负得正例如:排序后的数组[-70,-12,-10,10,15,29,30]很清晰,前面两位负数相乘,再和最后一位最大的数相原创 2021-04-25 12:28:24 · 477 阅读 · 1 评论