算法练习
小思思的树洞
这个作者很懒,什么都没留下…
展开
-
无重复的最长字串的长度JS
思路采用滑动窗口的思想:扩张 + 收缩首先定义两个指针,首先(右指针)扩张到滑动窗口不满足条件的时候暂停,(左指针)开始收缩窗口,让窗口满足条件后再进行扩张(右指针)实现 const str = 'ababcdadee' function lengthOfLongestSubstring(s) { const len = s.length; let result = 0, left = 0, right = 0;原创 2021-11-23 14:28:07 · 701 阅读 · 0 评论 -
JS冒泡排序和快速排序
冒泡排序1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。2.第一轮的时候最后一个元素应该是最大的一个。3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。const arr = [9, 3, 2, 6, 5, 9, 7]; // 时间复杂度 n^2 function bubbleSort(arr) { let len = arr.length - 1;原创 2021-11-19 11:58:30 · 453 阅读 · 0 评论 -
二分查找JS实现
思路1.从一组有序元素中间开始查找,如果中间元素刚好和目标元素相等,则查找结束。2.如果中间元素大于目标元素,则说明目标元素在数组左侧区域;如果中间元素小于目标元素,则说明目标元素在数组右侧区域。重复第一部操作,直至找到目标元素。3.如果找不到目标元素,则返回-1。实现//递归算法 const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9 ]; function binarySearch(arr, item, startIndex, endIndex) {原创 2021-11-19 10:18:10 · 938 阅读 · 0 评论