Loading

摘要: 思路 方法一:暴力法 方法二:哈希表 方法三:双指针之一 (1) 遍历链表A, B,计算出他们分别的长度lenA, lenB。 (2) 链表长的指针向后移动到俩个链表长度差的位置。 (3) 之后一一进行比较。 复杂度分析 时间复杂度:O(lenA + lenB) 空间复杂度:O(1) 1 /** 2 阅读全文
posted @ 2020-11-09 20:22 拾月凄辰 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 关于单链表中的环,一般涉及到以下问题: 1.给一个单链表,判断其中是否有环的存在; 使用快慢指针,每次快指针比慢指针多走一步,即慢指针每次走一步,快指针每次走两步,直到快指针又追到慢指针,说明存在环,并且快指针一定会在慢指针走完第一圈之前和它相遇。时间复杂度为线性。 2.如果存在环,找出环的入口点; 阅读全文
posted @ 2020-11-09 17:16 拾月凄辰 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 思路 方法:归并排序求逆序对 题解思路来自:力扣官方题解 - 数组中的逆序对 复杂度分析 1 class Solution { 2 public: 3 int reversePairs(vector<int>& nums) { 4 vector<int> tmp(nums.size()); 5 re 阅读全文
posted @ 2020-11-09 17:06 拾月凄辰 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 思路 方法:哈希表 第一次遍历字符串s,用哈希表统计每个字符出现的次数,第二次遍历字符串s,当某字符出现次数为1时,返回之。 复杂度分析 时间复杂度:O(n)。 空间复杂度:O(1)。由于题目指出 s 只包含小写字母,因此最多有 26 个不同字符,最多需占用 O(26) = O(1) 的额外空间。 阅读全文
posted @ 2020-11-09 13:36 拾月凄辰 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 思路 方法一:小顶堆 生成丑数的规律:如果已知丑数ugly,那么ugly * 2,ugly * 3和ugly * 5也都是丑数。既然求第n小的丑数,可以采用最小堆来解决。每次弹出堆中最小的丑数,然后检查它分别乘以2、3和 5后的数是否生成过,如果是第一次生成,那么就放入堆中。第n个弹出的数即为第n小 阅读全文
posted @ 2020-11-09 13:07 拾月凄辰 阅读(66) 评论(0) 推荐(0) 编辑