![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JS算法笔记
姜衿
立志成为优秀前端开发
展开
-
面试测试题:卡牌游戏(请使用Vue3 + Ts 完成)
思路:去掉大小王的扑克牌,合计54张牌,跟我们正常玩扑克牌一样,先洗牌,然后依次发牌。不同的地方就是在于结果判断(这个地方没完成)。3、结果判断算法(未完成)1、洗牌算法(乱序算法)2、发牌算法(依次发牌)原创 2023-02-15 12:00:47 · 1350 阅读 · 0 评论 -
JS算法笔记(双指针实现按奇偶排序数组)
*给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。输入:nums = [3,1,2,4]输出:[2,4,3,1]解释:[4,2,3,1]、[2,4,1,3] 和 [4,2,1,3] 也会被视作正确答案。/** * @param {number[]} nums * @return {number[]} */var sortArrayByParity = function(nums) {原创 2022-04-29 17:15:43 · 190 阅读 · 0 评论 -
JS算法笔记——替换空格
替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1: 输入:s = “We are happy.”输出:“We%20are%20happy.”思路首先扩充数组到每个空格替换成"%20"之后的大小。然后从后向前替换空格,也就是双指针法,过程如下:i指向新长度的末尾,j指向旧长度的末尾。为什么要从后向前填充,从前向后填充不行么?从前向后填充就是O(n^2)的算法了,因为每次添加元素都要将添加元素之后的所有元素向后移动。代码实现/** * @param {stri原创 2021-10-22 16:14:08 · 294 阅读 · 0 评论 -
JS算法笔记——反转字符串
反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]思路数组reverse方法最简单,最直接的解法,既然是数组形式输出,直接数组reverse方法倒置数组即可,既然是算法题,肯定是不希望用数组reverse方法来解决。双指针方法对于字符串,我们定义两个指针(也可以说是索引下表),一个从字符串前面,一个从字符串后面,两个指针同时原创 2021-10-22 15:41:21 · 220 阅读 · 0 评论 -
JS算法笔记——移除链表元素
移除链表元素思路链表的定义具有递归的性质,因此链表题目常可以用递归的方法求解。这道题要求删除链表中所有节点值等于特定值的节点,可以用递归实现。对于给定的链表,首先对除了头节点 head以外的节点进行删除操作,然后判断 head 的节点值是否等于给定的val。如果 head 的节点值等于 val,则head 需要被删除,因此删除操作后的头节点为head.next;如果head 的节点值不等于val,则head 保留,因此删除操作后的头节点还是 head。上述过程是一个递归的过程。递归的终止条件是hea原创 2021-10-21 16:29:59 · 501 阅读 · 0 评论 -
JS算法笔记——有序数组的平方
有序数组的平方给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]思路暴力排序数组里面每个数平方之后,再排个序。/** * @param {number[]} nums * @return {number[]} */var so原创 2021-10-21 15:06:07 · 185 阅读 · 0 评论 -
JS算法笔记---移除元素
移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。//时间复杂度O(n原创 2021-10-21 14:38:11 · 155 阅读 · 0 评论 -
JS每日一题:前端电商 sku 全排列的递归回溯算法
本文内容:https://github.com/sl1673495/blogs/issues/50需求需求描述起来很简单,有这样三个数组:let names = ["iPhone X", "iPhone XS"]let colors = ["黑色", "白色"]let storages = ["64g", "256g"]需要把他们的所有组合穷举出来,最终得到这样一个数组:[ ["iPhone X", "黑色", "64g"], ["iPhone X", "黑色", "256g"]原创 2021-10-15 17:00:25 · 342 阅读 · 0 评论 -
JS算法笔记—二分查找
JS算法笔记—二分查找//二分查找是一种基于比较目标值和数组中间元素的教科书式算法。//如果目标值等于中间元素,则找到目标值。//如果目标值较小,继续在左侧搜索。//如果目标值较大,则继续在右侧搜索。//时间复杂度:O(logN)。 空间复杂度:O(1)。//二分查找var search = function(nums, target) { let left = 0; // 初始左边界 let right = nums.length - 1; // 初始右边界 // 如果le原创 2021-03-30 16:44:59 · 87 阅读 · 0 评论 -
JS算法笔记—快速排序
JS算法笔记—快速排序//快速排序let arr = [5,7,9,6,4,2,78,56,55,98,123] function quickSort2(arr, start, end) { while(start >= end) return let pivot = start, pivotVal = arr[pivot], idx = pivot + 1 while (idx <= end) { if (arr[idx] < pivotVal) {原创 2021-03-30 11:43:27 · 71 阅读 · 0 评论 -
JS算法笔记---快速排序
//快速排序function quickSort(arr){ function swap(arr,right,left){ var tmp = arr[right]; arr[right]=arr[left]; arr[left]=tmp; } function partition(arr,left,right){//分区操作, var pivotValue=arr[right]//最右面设为标准 va原创 2021-03-30 11:36:39 · 73 阅读 · 0 评论 -
JS 算法笔记–-冒泡排序
JS算法笔记–冒泡排序//冒泡排序let arr = [1,5,3,8,45,95,152,136]function bubble_sort(arr){let len = arr.length for(var i=0; i<len; i++){ for(var j=0; j<len -1 - i; j++){ if(arr[j] > arr[j+1]){ [arr[j],arr[j+1]] = [arr[j+1],arr[j]] } } } re原创 2021-03-30 11:23:03 · 107 阅读 · 0 评论