算法
小庄hua
身在无间,心在桃源
展开
-
快速排序
快速排序第一种:阮一峰思路快排思路1.找基数(一般是以中间项为基数)2.遍历数组,小于基准的放在left,大于基准的放在right3.递归function fn(arr){ //找基数 if(arr.length<=1) return arr; let num=Math.floor(arr.length/2); let onum=arr.splice(num,1)[0];//删除基数 //定义数组 let left=[]; let right=[]; for(let i=0原创 2021-04-15 17:03:14 · 128 阅读 · 0 评论 -
冒泡排序
冒泡排序思想:每次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来,每次排序只能确定一个值的位置时间复杂度为O(N^2) function fn() { let arr = [11, 34, 23, 98, 2, 23, 45]; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length - i; j++) { if (arr[j] < arr[j原创 2021-04-15 17:02:36 · 121 阅读 · 0 评论 -
桶排序
桶排序题目:将a,b,c,d,e五个同学的分数(满分为10分) 从大到小排序思想:申请一个大小为11的数组a[11] ,初始化为0 (js不用刻意定义长度)处理每个人的分数 例如第一个人的分数是五分,我们就将相对应的a[5]的值在原来的基础上加1然后将其从后至前将不为0的数组项打印出来代码: function fn(a, b, c, d, e) { let arr = []; for (let i = 0; i < 11; i++) { arr.push原创 2021-04-15 17:02:06 · 81 阅读 · 0 评论 -
696.计数二进制子串
696.计数二进制子串题目描述给定一个字符串 s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是连续的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起原创 2021-04-15 17:01:13 · 82 阅读 · 0 评论 -
577,反转字符串中的单词
577,反转字符串中的单词题目描述给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。题解1var reverseWords = function(s) { //先分析思路 /* 先用空格将其分开,这时候是数组原创 2021-04-15 17:00:09 · 74 阅读 · 0 评论 -
344.反转字符串
344.反转字符串题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,原创 2021-04-12 08:26:18 · 90 阅读 · 0 评论 -
26. 删除排序数组中的重复项
26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返原创 2020-10-14 09:50:12 · 107 阅读 · 0 评论