leetcode
文章平均质量分 54
陌上烟雨遥407
专注于单片机,嵌入式linux驱动,嵌入式linux应用,嵌入式QT,音视频开发。
展开
-
leetcode题型分析《哈希表》
哈希表最大的优点就是高效,在哈希表中插入,删除或查找一个元素都只需要O(1)时间,常被用来优化时间效率。1 哈希表的设计1)如何快速一个元素在哈希表中位置答:可以使用一个数组2) 如何解决哈希冲突答:可以把存入数组同一位置的多个元素用链表存储。3)如何保证存入和读取删除一个元素时间是O(1)答:哈希表中元素数目与数组长度的比值超过一定阈值就对数组进行扩容。剑指offer II 30 插入,删除和随机访问都是O(1)的容器思路:用一数组存放插入得值;用一个hash ,key原创 2022-09-07 07:34:47 · 144 阅读 · 0 评论 -
leetcode题型分析《链表》
增加dummy节点,减少代码复杂程度,不用担心头节点为空的情况。剑指offer II 21 删除倒数第N个节点思路:定有两个指针,让指针一先走N步,然后两个指针一起前进,当指针一到达链表尾部时,指针二位于倒数第N个节点。剑指offer II 22 链表中环的入口节点思路:定义快慢指针,快指针一次走两步,慢指针一次一步,当快慢指针相遇时,将快指针重新指向头,然后一次一步,当快慢指针再次相遇时,即为环的入口点。剑指offer II 23 两个链表的第1个重合节点思路1:定义p1,p2指针原创 2022-09-05 08:18:36 · 296 阅读 · 0 评论 -
leetcode题型分析《字符串》
题型一般都与统计字符出现次数有关系,常用哈希表存储每个元素出现的次数,然后加双指针遍历。剑指offer II 14 字符串中的变位词变位词指个单词的字母和出现次数相同,只是出现顺序不同。step 1用数组模拟哈希表,数组下标0对应字母a,下标25对应字母z;step 2 首先扫描字符串s1,对应哈希表值也++,然后扫描字符串s2,对应哈希表得值--;如果哈希表所有的值都为0,就是变位词。step 3 判断长度为n的s2子串是不是s1的变位词,扫描字符串中的每一个字母,把该字母在哈希表中的原创 2022-09-02 07:28:57 · 154 阅读 · 0 评论 -
leetcode题型分析《数组》
1 双指针使用两个相同反向或者相反方向的指针扫描数组从而达到解题的目的。相反方向指针经常用来求排序数组中的两数之和。相同方向指针经常用来求正数数组中子数组的和或者乘积。剑指offer II 6 排序数组中两个数组之和剑指offer II 7 数组中和为0的3个数字思路:要求三数之和,先求两数之和,固定变量i,求tagert - sum(j, k) = nums[i];如果i,j,k对应的和大于0,k向左移动,如果和小于0,j向右移动。............原创 2022-08-26 07:43:31 · 155 阅读 · 0 评论 -
leetcode题型分析《整数》
剑指offer II 1整数除法思路:如果被除数最多大于除数*2^k倍,那么将被除数减去除数的2^k倍,然后将剩余的被除数重复之前的步骤。每次除数翻倍,时间复杂度为O(log n)。step 1:如果dividend为整数最大值,被除数为-1返回INT_MAX;step 2: 定义negative = 2; 负负得正,当negative = 1时,则取相反符号。step 3: 每次减去被除数最多大于除数*2^k,并累加result。原创 2022-08-25 07:24:24 · 108 阅读 · 0 评论 -
leetcode 算法小技巧
1 备忘录可以用一维数组或者哈希表充当备忘录。int fib(int N) { // 备忘录全初始化为 0 int[] memo = new int[N + 1]; // 进行带备忘录的递归 return helper(memo, N);}int helper(int[] memo, int n) { // base case if (n == 0 || n == 1) return n; // 已经计算过,不用再计算了 if原创 2022-02-27 14:57:12 · 366 阅读 · 0 评论 -
leetcode 容器使用
刷题笔记原创 2022-01-09 16:08:09 · 179 阅读 · 0 评论 -
leetcode题型分析
1) 前缀和1 应用场景: 需频繁的对某一区间进行求和2 算法思想:用prevSum[i + 1] 记录nums[0...i]之和,要求nums[i..j] 之间的和只需 prevSum[j+1] - prevSum[i]就好。3 表达式:prevSum[i+1] = nums[0] + nums[1] + ... + nums[i]; nums[i..j] = prevSum[j+1] - prevSum[i];4 例子: 303. 区域和检索 - 数组不可变(中等) 304. ⼆维区域和检原创 2022-03-12 11:30:33 · 1805 阅读 · 0 评论