Loading

上一页 1 ··· 33 34 35 36 37 38 39 40 41 ··· 75 下一页
摘要: 思路 方法一:暴力递归法 (自顶向下的递归) 使用递归编写一个求高度的函数,之后使用先序遍历每个结点,判断左右子树的高度差是否满足要求。 这种方法每次判断一个结点都需要使用递归先求出其左右子树的高度,比如下面这棵树,判断1的时候,使用递归求了2,3, 4的高度,判断2的时候,又递归求了3,4,的高度 阅读全文
posted @ 2020-11-10 15:20 拾月凄辰 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 思路 方法:递归 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) 阅读全文
posted @ 2020-11-10 14:43 拾月凄辰 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 思路 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val( 阅读全文
posted @ 2020-11-10 14:36 拾月凄辰 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 思路 方法一:顺序查找 顺序查找第一个nums[i]不等于下标 i 的数,这时的下标 i 就是缺少的数。 复杂度分析 时间复杂度:O(n) 空间复杂度:O(1) 方法二:二分法 复杂度分析 时间复杂度:O(logn) 空间复杂度:O(1) 1 class Solution { 2 public: 3 阅读全文
posted @ 2020-11-10 14:04 拾月凄辰 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 思路 排序数组中的搜索问题,首先想到 二分法 解决。 方法一:二分法之一 (类似暴力) (1) 用二分法找到其中一个target所在的位置 (2) 之后在此位置前后顺序查找依次计数target的出现次数。(有点暴力,在方法二对此有改进) 复杂度分析 时间复杂度:最坏情况下O(n) 空间复杂度:O(1 阅读全文
posted @ 2020-11-10 10:16 拾月凄辰 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 思路 方法一:暴力法 方法二:哈希表 方法三:双指针之一 (1) 遍历链表A, B,计算出他们分别的长度lenA, lenB。 (2) 链表长的指针向后移动到俩个链表长度差的位置。 (3) 之后一一进行比较。 复杂度分析 时间复杂度:O(lenA + lenB) 空间复杂度:O(1) 1 /** 2 阅读全文
posted @ 2020-11-09 20:22 拾月凄辰 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 关于单链表中的环,一般涉及到以下问题: 1.给一个单链表,判断其中是否有环的存在; 使用快慢指针,每次快指针比慢指针多走一步,即慢指针每次走一步,快指针每次走两步,直到快指针又追到慢指针,说明存在环,并且快指针一定会在慢指针走完第一圈之前和它相遇。时间复杂度为线性。 2.如果存在环,找出环的入口点; 阅读全文
posted @ 2020-11-09 17:16 拾月凄辰 阅读(225) 评论(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 拾月凄辰 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 思路 方法:哈希表 第一次遍历字符串s,用哈希表统计每个字符出现的次数,第二次遍历字符串s,当某字符出现次数为1时,返回之。 复杂度分析 时间复杂度:O(n)。 空间复杂度:O(1)。由于题目指出 s 只包含小写字母,因此最多有 26 个不同字符,最多需占用 O(26) = O(1) 的额外空间。 阅读全文
posted @ 2020-11-09 13:36 拾月凄辰 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 思路 方法一:小顶堆 生成丑数的规律:如果已知丑数ugly,那么ugly * 2,ugly * 3和ugly * 5也都是丑数。既然求第n小的丑数,可以采用最小堆来解决。每次弹出堆中最小的丑数,然后检查它分别乘以2、3和 5后的数是否生成过,如果是第一次生成,那么就放入堆中。第n个弹出的数即为第n小 阅读全文
posted @ 2020-11-09 13:07 拾月凄辰 阅读(67) 评论(0) 推荐(0) 编辑
上一页 1 ··· 33 34 35 36 37 38 39 40 41 ··· 75 下一页