
算法
记录在学习过程中遇见的一些算法小知识
小白小白从不日白
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
排序
1.冒泡排序基本思想:依次比较相邻的两个数,如果不符合排序规则,则调换两个数的位置。这样一遍比较下来,能够保证最大(或最小)的数排在最后一位,再对最后一位以外的数组,重复前面的过程,直至全部排序完成<script> var arr = [3, 2, 4, 5, 1]; //一轮比较,得到一个最大值。外层循环控制轮数 for (var i = 1; i < arr.length; i++) { /...原创 2021-04-28 18:05:56 · 66 阅读 · 0 评论 -
求num的阶层,num可输入
//求n的阶层,num可输入 var num = parseInt(prompt('请输入你想输入的自然数:num')); function sum(n) { var sum = 0; for (var i = 0; i < n; i++) { //求阶层 function factorial(m) { if (m..原创 2021-05-22 15:27:49 · 111 阅读 · 0 评论 -
电话号码的组合
题目:给定一个只包含数字2-9的字符串,返回所有它能表示的字母组合,给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母思路:<script> const letterCombinations = str => { //建立电话号码键盘映射 let map = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv'.原创 2021-07-05 21:56:12 · 423 阅读 · 1 评论 -
重复的子字符串
题目:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成,给定的字符串只含有小写英文字母,并且长度不超过10000示例1:示例2:示例3:代码:<script> const repeatedSubstringPattern = str => { //x.test()该正则在字符串里是否有匹配。 var reg = /^(\w+)\1+$/; ...原创 2021-07-10 20:00:12 · 83 阅读 · 0 评论 -
种花问题-
题目:假设你有一个很长的花坛,一部分地块种植了花,另一部分没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数n。能否在不打破种植规则的情况下种入n朵花?能返回true,否则返回false分析:代码:<script> const canPlaceFlowers = (arr, n) =...原创 2021-07-07 17:11:13 · 182 阅读 · 0 评论 -
卡牌分组-
题目:给定一副牌,每张牌上都写着一个整数此时,你需要选定一个数字x,使我们可以将整幅牌按下述规则分成1组或更多组:每组都有x张牌 组内所有的牌上都写着相同的整数仅当你可选的x>=2时,返回true参考示例:思路:当最小的分组的长度,是这个分组的长度的最小值和其他的数字的长度是整数倍的关系即满足代码: <script> const hasGroupsSizeX = arr => { ..原创 2021-07-06 20:32:02 · 134 阅读 · 0 评论 -
求100以内的质数
<script> //求100以内的质数 var count = 0; //计数 for (var i = 2; i < 100; i++) { //第一层循环,遍历循环2-100中所有i 的数值 for (var j = 1; j <= Math.sqrt(i); j++) { //第二层循环,设置一个比i小的因子,从j=1开始自增 if (i % j == 0) { .原创 2021-05-22 16:31:55 · 168 阅读 · 0 评论 -
选择排序--
定义:从一个位置开始遍历,如果找到比该位置还小的值则相互交换位置,依次类推。是选择性的交换思路分析:代码:<script> const SelectSort = arr => { for (let i = 0, len = arr.length, min; i < len; i++) { //取当前的值,一是为了与后面的元素作对比,二是当找到最小值后...原创 2021-07-13 15:05:56 · 92 阅读 · 0 评论 -
实现输入1三位数的正整数,使其反向输出
<script> //编写程序实现输入一个三位数的正整数,输出时反向输出:例如:输入456,输出654 var n = parseInt(prompt('请输入一个有效的三位数的正整数')); var n1 = n % 10; //个位 var n2 = parseInt(n % 100 / 10); //十位 n % 100-->56;n % 100 / 10-->5.6;parseInt(n % 100 / 10..原创 2021-05-22 16:05:55 · 1567 阅读 · 0 评论 -
正则表达式匹配
题目:给定一个字符串(s)和一个字符模式(p)。实现支持'.'和'*'的正则表达式匹配'.':匹配任意字符串'*':匹配零个或多个前面的元素匹配应该覆盖整个字符串(s),而不是部分说明:s可能为空,且包含从a-z的小写字母p可能为空,且包含从a-z的小写字母及字符.和*.解析:代码:<script> const regMatching = (str, mode) => { ...原创 2021-07-11 17:49:03 · 272 阅读 · 0 评论 -
按奇偶排序数组
题目:按奇偶排序数组给定一个非负整数数组A,A中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当A[i]为奇数时,i也是奇数当A[i]为偶数时,i也是偶数你可以返回任何满足上述条件的数组作为答案示例1:思路分析:代码:<script> const sortArrayByParityII = arr => { //进行降序排序 arr.sort((a, b) ...原创 2021-07-15 16:13:31 · 513 阅读 · 0 评论 -
最大间距--
题目:给定一个无序数组,找出数组再排序之后,相邻元素之间的最大间距如果数组元素个数小于2,则返回0示例:常规做法: <script> const maximumGap = arr => { //如果数组长度小于2,则返回0 if (arr.length < 2) { return 0; } //排序 ..原创 2021-07-14 17:17:02 · 183 阅读 · 0 评论 -
格雷编码-
题目:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值有且仅有一个数的差异,给定一个代表编码总位数的非负整数n,打印其格雷编码序列。格雷编码序列必须以0开头。示例1:对于给定的n,其格雷编码序列并不唯一。例如:[0,2,3,1]也是一个有效的格雷编码序列示例2:思路: <script> const grayCode = n => { //递归函数,用来算输入为n的格雷...原创 2021-07-09 21:46:49 · 223 阅读 · 0 评论 -
反转字符串中的单词--给定一个字符串,反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序
思路: 1.将句子按照空格进行分隔,将字符串当做数组,数组的先后顺序就是单词之间的先后顺序 2.将数组中的每个单词进行反转方式1:<script> //方式1 const reverseWords = str =>{ let arr = str.split(' ');//将字符串进行分隔并转换成数组 let result = arr.map(item=>{ //Array.map() 方法返回一个新数组,...原创 2021-07-03 23:35:08 · 997 阅读 · 2 评论 -
斐波那契数列
<script> //斐波纳契数列 1 1 2 3 5 8... var n = parseInt(prompt('请输入你想求第n个斐波那契数列')); // function fibonacci(n) { // var n1 = 1; // var n2 = 1; // var sum = n2; // for (var i = 1; i &l.原创 2021-05-22 15:48:40 · 156 阅读 · 0 评论 -
求2的n次幂
//计算2的n次幂,n可输入 //Math.pow(x,y);用于计算x的y次幂 var n = parseInt(prompt('请输入你想输入的自然数:n')); var power_n = Math.pow(2, n); console.log(power_n);原创 2021-05-22 15:26:16 · 436 阅读 · 0 评论 -
计数二进制子串
题目:指定一个字符串,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的思路:遍历字符串,记录每次连续的字符的个数放入数组中,比如001100011,记录的数组是[2,2,3,2];然后取数组中相邻元素的最小值相加即可...原创 2021-07-05 19:29:27 · 109 阅读 · 0 评论 -
冒泡排序--
冒泡排序:代码:<script> const BubbleSort = arr => { //控制循环的次数 for (let i = arr.length - 1, tmp; i > 0; i--) { //每次都是从0开始遍历 for (let j = 0; j < i; j++) { ...原创 2021-07-12 15:14:17 · 90 阅读 · 0 评论