剑指offer
ypw44
成为自己最想成为的人~
展开
-
1482. 制作 m 束花所需的最少天数(经典二分+验证答案)
题意:给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。思路:对于不能满足的情况无非是 bloomDay.size() < m * k;我们很容易得到天数无非是在 bloomDay 元素中的最小值与最大值之间。那么我们自原创 2021-05-09 13:39:58 · 132 阅读 · 0 评论 -
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
思路:由二叉搜索树的性质我们很容易得到从根结点到p和q的路径,那么p和q的最近公共祖先就是从根结点到他们路径上的最后一个相同的结点。我们从根结点遍历搜索二叉树找到p跟q的路径并记录下来,然后遍历循环路径,找到第一个不相等的点,说明在此时分叉了,那么上一个我们存下来的节点,就是最后一个公有的结点了,即为最近公共祖先。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode .原创 2021-05-06 13:25:02 · 141 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点(指针法)
浪漫相遇~你变成我,走过我走过的路。我变成你,走过你走过的路。然后我们便相遇了..思路:用两个指针分别指向A,B的头结点,然后循环遍历链表,当A遍历完后将其指向B的头结点,B遍历完后将其指向A的头结点。当我们走完各自的路 重新回到对方最初的地方如果我们的缘分不是两条平行的线那么一定会在第一次有交集的地方重新相遇codeclass Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode原创 2021-05-05 13:51:47 · 79 阅读 · 0 评论 -
剑指 Offer 65. 不用加减乘除做加法
刷爆Leetcode剑指offer第一天思路:见图解class Solution {public: int add(int a, int b) { // 后续用a表示非进位和,b表示进位,当进位为0,则表示计算结束 return b == 0 ? a : add(a^b, (unsigned int)(a&b) << 1); }};...原创 2021-05-05 13:27:29 · 60 阅读 · 0 评论