leetcode
点了个汤
菜鸡前端一枚
展开
-
快速排序思想
快速排序思想将数组首元素作为枢纽,左边小于枢纽,右边大于枢纽将左边数组和右边数组分别选取首元素为枢纽,采用递归。直到每部分内只有一个元素或为空位置,最终得到的就是排好序的数组算法实现let sortArray=(nums)=>{ quickSort(nums,0,nums.length-1); return nums;}const quickSort=(nums,low,high)=>{ if(low<high){ let p原创 2020-11-01 22:33:51 · 150 阅读 · 0 评论 -
深度优先搜索和广度优先搜索
深度优先搜索(DFS)和广度优先搜索(BFS)这两种算法思想在数据结构内都是解决图论相关的知识。也能提供一些对问题解决的思路。BFSBFS如其命名一样,是需要将一个层次的问题解决完毕之后才会去解决下一层次的问题。较为经典的是二叉树的层次遍历。:思想需要借助队列,先将根节点推入队列中,队列有一个元素了,循环队列,队不空,执行出队,并将该节点的左右孩子依次入队,以此类推。typedef struct queue{ struct TreeNode *data[1009]; int h原创 2020-10-28 20:18:55 · 145 阅读 · 0 评论 -
算法-递归和回溯
算法-递归和回溯递归和回溯的基本概念:递归的基本性质是函数调用,处理问题时,把大规模的问题不断的变小然后进行推导的过程。回溯是利用递归的性质。从问题的起点出发。不断尝试,回头异步甚至多步做选择,知道最终抵达终点的过程。递归(Recursion)什么是递归,为什么叫递归?递归有递有归我认为递归需要几个要素:递归终止条件 什么时候停止递,开始归。递归递的条件 什么...原创 2020-04-20 19:16:37 · 3585 阅读 · 0 评论 -
解析时间复杂度和空间复杂度
解析时间复杂度和空间复杂度说明时间复杂度和空间复杂度从字面上理解:时间复杂度:指的是执行这段代码所需要的时间,需要的时间越短,算法越好空间复杂度:指的是执行当前算法所需要消耗的存储空间大小。时间复杂度时间复杂度的表示方法一般用大O符号表示法表示,O(f(n)),n是影响复杂度变化的因子,f(n)是复杂度的算法。这个表示方法不是具体的运算时间,而是代码执行时间的增长变化趋势...原创 2020-04-14 19:24:46 · 201 阅读 · 0 评论 -
基本排序算法-冒泡和插入
基本排序算法冒泡排序(Bubble Sort)基本思想冒泡排序是依次对数组内的两个元素进行比较,满足条件交换位置,例:给定数组[2,1,7,9,5,8],按照从左到右,从小到大的顺序排列。 BubbleSort=(arr:Array<number>):Array<number>=>{ let arrs=arr; let length...原创 2020-04-13 21:52:32 · 169 阅读 · 0 评论 -
每日温度题解
每日温度的两种解法题目描述给定一个数组T代表了未来几天里每天的温度值,要求返回一个新的数组D,D中的每个元素表示需要经过多少天才能等来温度的升高。给定T:[23,25,21,19,22,26,23]返回 D: [ 1, 4, 2, 1, 1, 0, 0]暴力解法var dailyTemperatures = function(T) { let resul...原创 2020-03-12 22:05:23 · 424 阅读 · 0 评论 -
基本常用数据结构的优缺点
基本常用数据结构的优缺点数组 字符串数组和字符串是最基本的数据结构,在很多编程语言中都有着十分相似的性质。数组的优点在于:构建非常简单能在O(1)的时间里根据数组的下标(index)查询某个元素而数组的缺点在于:构建时必须分配一段连续的空间查询某个元素是否存在时需要遍历整个数组,耗费 O(n) 的时间(其中,n 是元素的个数)删除和添加某个元素时,同样需要...原创 2020-03-08 16:47:14 · 1187 阅读 · 0 评论 -
翻转K组链表
翻转K组链表var reverseKGroup = function(head, k) { // 以k为3举例 let thead = new ListNode(0) thead.next = head let pre = thead let end = thead while (end.next !== null) { // 第一...原创 2020-03-07 14:38:41 · 134 阅读 · 0 评论