数据结构
Super灬Lin丶
这个作者很懒,什么都没留下…
展开
-
leetcode 6 Z 字形变换 TypeScript
leetoce 6 Z 字形变换 TypeScript思路:**暴力法:**初始化二维数组strs,遍历字符串,将字符串的字母放到数组指定位置,遍历√作为一个循环循环为 直下+右斜上 (右斜上遍历时注意最后不要包含下一个循环的顶点),就是反转的N形的前两笔另外还有数学找规律的方式 有空更function convert(s: string, numRows: number): string { if (numRows === 1) return s; let n = s.len原创 2022-04-04 21:06:18 · 1084 阅读 · 0 评论 -
leetcode 41 缺失的第一个正数 TypeScript
leetcode 41 缺失的第一个正数 TypeScript思路:原地哈希 假设值为n,则将值为n的数换到数组下标index为n-1的位置由于下标index>=0 且 index<arr.length,所以仅对正数、且在数组长度范围的值进行哈希再通俗点说,1放到下标0位置,2放到下标1位置,…以此类推最后从0遍历哈希表,如果缺失当前index对应的值index+1,直接返回结果即可function firstMissingPositive(nums: number[]): num原创 2022-04-02 13:56:33 · 633 阅读 · 0 评论 -
leetcode 22 括号生成 TypeScript
思路:首先题目默认的左右括号数量是相同的,题目要求组合成所有可能的合法括号所以基本思路可以定为 dfs + 回溯深度优先遍历(dfs),3个参数分别代表 左括号剩余、右括号剩余、当前拼接的字符串终止条件为:当左右括号都清空时终止条件上一定要左括号先入,否则就是不合法的代码如下:function generateParenthesis(n: number): string[] { const res = []; const dfs = (left, right, curStr.原创 2022-03-31 10:07:12 · 299 阅读 · 0 评论 -
leetcode 128 最长连续序列 TypeScript
leetcode 128 最长连续序列 TypeScript思路:题目要求时间复杂度O(n)解决,所以排序思路pass可以先将数组new Set去重,接下来对set集合进行遍历,判断当前数nums[i] - 1是否存在于set中,如果没有num-1才进行连续序列的查找,从而确保该数是当前连续序列的起点,此时开始计数,通过while不断查找currentNum+1是否存在于set中,最终计算出最大的长度返回代码如下:function longestConsecutive(nums: number原创 2022-03-26 12:30:15 · 856 阅读 · 0 评论 -
堆排序时间复杂度计算
堆排序传入两个参数arr 以及当前arr截取的需要排序的长度n首先是进行建堆,第二步将末尾结点替换根结点,对长度截取数n减去1再进行建堆代码如下:function heapify(arr,n,i){ //arr数组 n表示当前堆大小也就是arr截取的长度 i表示当前维护的三角堆顶下标 let left = i * 2 + 1; let right = i * 2 + 2; let maxindex = i; if(left<n&&arr[m原创 2022-03-20 15:48:23 · 1755 阅读 · 1 评论